From 16f689cb167036c7f02801c1ad20c641e6788878 Mon Sep 17 00:00:00 2001 From: Fabrizio Ferrai Date: Thu, 4 May 2023 19:23:50 +0300 Subject: [PATCH] Add `migrate` command (#901) --- .github/workflows/build.yml | 16 +- .github/workflows/release.yml | 10 +- app/Spago.hs | 2 + appveyor.yml | 14 +- spago.cabal | 3 + src/Spago/Bower.hs | 4 +- src/Spago/CLI.hs | 9 + src/Spago/Config.hs | 13 +- src/Spago/NewConfig.hs | 169 ++++++++ src/Spago/Packages.hs | 2 +- src/Spago/Types.hs | 20 +- stack.yaml | 2 +- test/SpagoSpec.hs | 17 +- test/Utils.hs | 10 +- test/fixtures/list-packages.json | 626 ++++++++++++++-------------- test/fixtures/new-spago-config.yaml | 23 + test/fixtures/sources-output-15.txt | 2 +- 17 files changed, 593 insertions(+), 349 deletions(-) create mode 100644 src/Spago/NewConfig.hs create mode 100644 test/fixtures/new-spago-config.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e8071440..66c7d8923 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,7 @@ on: branches: [ master ] env: - STACK_VERSION: '2.7.3' + STACK_VERSION: '2.9.1' jobs: build: @@ -17,7 +17,7 @@ jobs: matrix: include: - os: ubuntu-latest - image: haskell:8.10.7-stretch@sha256:100f8fb7d7d8d64adb5e106fe8136b8d4cbdc03aeb2cbd145a7597d74b69bafb + image: haskell:9.2.4 - os: macOS-latest - os: windows-latest steps: @@ -41,11 +41,9 @@ jobs: if: runner.os != 'Linux' uses: haskell/actions/setup@v1 with: - ghc-version: '8.10.7' - stack-version: ${{ env.STACK_VERSION }} enable-stack: true + stack-version: "${{ env.STACK_VERSION }}" stack-no-global: true - stack-setup-ghc: true - name: Check Stack version and fix root access (Linux) if: runner.os == 'Linux' run: | @@ -55,7 +53,7 @@ jobs: - name: Setup node and npm uses: actions/setup-node@v2 with: - node-version: 14 + node-version: 18 # NB: We install gnu-tar because BSD tar is buggy on Github's macos machines, # and it breaks the cache: https://github.com/actions/cache/issues/403 - name: Install GNU tar (macOS) @@ -95,7 +93,7 @@ jobs: $HOME\AppData\Local\Programs\stack\x86_64-windows key: ${{ runner.os }}-${{ hashFiles('stack.yaml') }}-1 - - run: npm install -g purescript@0.15.0 psc-package@3.0.1 bower@1.8.8 esbuild@0.14.28 + - run: npm install -g purescript@0.15.8 psc-package@3.0.1 bower@1.8.8 esbuild@0.14.28 - name: Install dependencies run: | @@ -116,8 +114,8 @@ jobs: run: ./scripts/fix-home stack test shell: bash - - name: Install PureScript 0.14.0 - run: npm install -g purescript@0.14.0 + - name: Install PureScript 0.14.9 + run: npm install -g purescript@0.14.9 - name: Run tests (PureScript < 0.15.0) shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c81df54c4..ca3682817 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: - '*' env: - STACK_VERSION: '2.7.3' + STACK_VERSION: '2.9.1' jobs: draft_release: @@ -38,7 +38,7 @@ jobs: matrix: include: - os: ubuntu-latest - image: haskell:8.10.7-stretch@sha256:100f8fb7d7d8d64adb5e106fe8136b8d4cbdc03aeb2cbd145a7597d74b69bafb + image: haskell:9.2.4 - os: macOS-latest - os: windows-latest steps: @@ -52,11 +52,9 @@ jobs: if: runner.os != 'Linux' uses: haskell/actions/setup@v1 with: - ghc-version: '8.10.7' stack-version: ${{ env.STACK_VERSION }} enable-stack: true stack-no-global: true - stack-setup-ghc: true - name: Check Stack version and fix root access (Linux) if: runner.os == 'Linux' run: | @@ -65,7 +63,7 @@ jobs: - name: Setup node uses: actions/setup-node@v1 with: - node-version: 10 + node-version: 18 # NB: We install gnu-tar because BSD tar is buggy on Github's macos machines, # and it breaks the cache: https://github.com/actions/cache/issues/403 - name: Install GNU tar (macOS) @@ -129,7 +127,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: 14 + node-version: 18 - name: Publish to NPM shell: bash env: diff --git a/app/Spago.hs b/app/Spago.hs index d453a9d98..d1a1d1b1a 100644 --- a/app/Spago.hs +++ b/app/Spago.hs @@ -11,6 +11,7 @@ import Spago.CLI (Command(..)) import qualified System.Environment as Env import qualified Spago.Build import qualified Spago.Messages as Messages +import qualified Spago.NewConfig import qualified Spago.Packages import qualified Spago.PackageSet import qualified Spago.CLI as CLI @@ -75,6 +76,7 @@ main = withUtf8 $ do $ Ls.listPackages transitiveFlag jsonFlag Sources -> Run.withInstallEnv $ Spago.Packages.sources + Migrate -> Run.withInstallEnv $ Spago.NewConfig.migrate -- ### Commands that need a "publish env": install env + git and bower BumpVersion dryRun spec -> Run.withPublishEnv diff --git a/appveyor.yml b/appveyor.yml index 3336f35cb..4ad619ed8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,8 +6,8 @@ branches: environment: STACK_ROOT: C:\sr - STACK_VERSION: 2.5.1 - nodejs_version: "14" + STACK_VERSION: 2.9.1 + nodejs_version: "18" matrix: - STACK_YAML: stack.yaml @@ -29,11 +29,11 @@ install: - mkdir ps-0.15 - ps: | $releases = "https://api.github.com/repos/purescript/purescript/releases" - $tag = "v0.14.0" + $tag = "v0.14.9" $download = "https://github.com/purescript/purescript/releases/download/$tag/win64.tar.gz" Invoke-WebRequest $download -Out ps-0.14\purescript.tar.gz - $tag = "v0.15.0" + $tag = "v0.15.8" $download = "https://github.com/purescript/purescript/releases/download/$tag/win64.tar.gz" Invoke-WebRequest $download -Out ps-0.15\purescript.tar.gz - tar -xvf ps-0.14\purescript.tar.gz -C ps-0.14 @@ -62,9 +62,3 @@ test_script: # We install psa and rerun the tests that exercise it - cmd: npm install -g purescript-psa - cmd: stack test --ta "--match \"/Spago/spago run\"" - - cmd: npm uninstall -g purescript-psa - # We rerun the same tests on PureScript 0.14.0 - - cmd: set PATH=C:\projects\spago\bin;C:\projects\spago\ps-0.14\purescript;%ORIGINAL_PATH% - - cmd: stack test - - cmd: npm install -g purescript-psa - - cmd: stack test --ta "--match \"/Spago/spago run\"" diff --git a/spago.cabal b/spago.cabal index 6c1d40055..7113f89e9 100644 --- a/spago.cabal +++ b/spago.cabal @@ -101,6 +101,7 @@ library Spago.GitHub Spago.GlobalCache Spago.Messages + Spago.NewConfig Spago.Packages Spago.PackageSet Spago.Prelude @@ -163,9 +164,11 @@ library , turtle , unliftio , unordered-containers + , uri-encode , utf8-string , versions , with-utf8 + , yaml , zlib executable spago diff --git a/src/Spago/Bower.hs b/src/Spago/Bower.hs index 01aa3836e..66a29e76d 100644 --- a/src/Spago/Bower.hs +++ b/src/Spago/Bower.hs @@ -9,7 +9,7 @@ import Spago.Env import qualified Data.Aeson as Aeson import qualified Data.Aeson.Encode.Pretty as Pretty -import qualified Data.HashMap.Strict as HashMap +import qualified Data.Aeson.KeyMap as KeyMap import qualified Data.Text as Text import qualified System.Info import qualified Turtle @@ -109,7 +109,7 @@ mkBowerVersion packageName version (Repo repo) = do Just (Object obj) -> pure obj _ -> die [ display $ "Unable to decode output from `bower " <> Text.intercalate " " args <> "`: ", display out ] - if HashMap.member "version" info + if KeyMap.member "version" info then pure $ Bower.VersionRange $ "^" <> version else pure $ Bower.VersionRange $ repo <> "#" <> version diff --git a/src/Spago/CLI.hs b/src/Spago/CLI.hs index 48a3c9aee..3f8ff6057 100644 --- a/src/Spago/CLI.hs +++ b/src/Spago/CLI.hs @@ -25,6 +25,8 @@ data Command -- | Default catch-all command = Default ShowVersion + | Migrate + -- | Initialize a new project | Init Force TemplateComments (Maybe Text) @@ -286,6 +288,12 @@ parser = do , pure Sources ) + migrate = + ( "migrate" + , "Produce a new-style, Registry-compatible configuration file from the current one" + , pure Migrate + ) + verify = ( "verify" , "Verify that a single package is consistent with the Package Set" @@ -350,6 +358,7 @@ parser = do , search , path , sources + , migrate ] packagesCommands = CLI.subcommandGroup "Packages commands:" [ install diff --git a/src/Spago/Config.hs b/src/Spago/Config.hs index 5b24b7fb6..aa2bbc740 100644 --- a/src/Spago/Config.hs +++ b/src/Spago/Config.hs @@ -66,7 +66,8 @@ parsePackage (Dhall.RecordLit ks') = do let ks = Dhall.extractRecordValues ks' repo <- Dhall.requireTypedKey ks "repo" (Dhall.auto :: Dhall.Decoder Repo) version <- Dhall.requireTypedKey ks "version" Dhall.strictText - dependencies <- Dhall.requireTypedKey ks "dependencies" dependenciesType + dependenciesList <- Dhall.requireTypedKey ks "dependencies" dependenciesType + let dependencies = Set.fromList dependenciesList let location = Remote{..} pure Package{..} parsePackage (Dhall.App @@ -77,7 +78,7 @@ parsePackage (Dhall.App True -> pure $ Text.dropEnd 12 spagoConfigPath False -> die [ display $ Messages.failedToParseLocalRepo spagoConfigPath ] rawConfig <- liftIO $ Dhall.readRawExpr spagoConfigPath - dependencies <- case rawConfig of + dependenciesList <- case rawConfig of Nothing -> die [ display $ Messages.cannotFindConfigLocalPackage spagoConfigPath ] Just (_header, expr) -> do newExpr <- transformMExpr (pure . filterDependencies . addSourcePaths) expr @@ -89,6 +90,7 @@ parsePackage (Dhall.App (set Dhall.rootDirectory (Text.unpack localPath) Dhall.defaultInputSettings) dependenciesType (pretty newExpr) + let dependencies = Set.fromList dependenciesList let location = Local{..} pure Package{..} parsePackage expr = die [ display $ Messages.failedToParsePackage $ pretty expr ] @@ -135,6 +137,12 @@ parseConfig = do pure PublishConfig{..} publishConfig <- try ensurePublishConfig + let ensureMigrateConfig = do + migrateLicense <- Dhall.requireTypedKey ks "license" Dhall.strictText + migrateVersion <- Dhall.requireTypedKey ks "version" Dhall.strictText + pure MigrateConfig{..} + migrateConfig <- try ensureMigrateConfig + packageSet <- Dhall.requireKey ks "packages" (\case Dhall.RecordLit pkgs -> parsePackageSet (Dhall.extractRecordValues pkgs) something -> throwM $ Dhall.PackagesIsNotRecord something) @@ -185,6 +193,7 @@ makeTempConfig dependencies alternateBackend configSourcePaths maybeTag = do let ks = Dhall.extractRecordValues ks' packageSet <- parsePackageSet ks let publishConfig = Left $ Dhall.RequiredKeyMissing "license" ks + let migrateConfig = Left $ Dhall.RequiredKeyMissing "license" ks pure $ Config { name = "", ..} _ -> die [ "Failed to parse package set" ] diff --git a/src/Spago/NewConfig.hs b/src/Spago/NewConfig.hs new file mode 100644 index 000000000..14e0adcca --- /dev/null +++ b/src/Spago/NewConfig.hs @@ -0,0 +1,169 @@ +module Spago.NewConfig where + +import Spago.Prelude +import Spago.Env + +import qualified Data.Map as Map +import qualified Data.Text as Text +import qualified Data.Yaml +import qualified Network.HTTP.Client as Http +import qualified Network.HTTP.Simple as Http +import qualified Spago.PackageSet +import qualified Spago.Dhall as Dhall +import qualified Spago.Messages as Messages +import Spago.Dhall (Directory (..), File (..), Scheme (..), URL (..)) +import qualified Network.URI.Encode as URI.Encode + +data NewConfig = NewConfig + { package :: PackageConfig + , workspace :: WorkspaceConfig + } + +instance ToJSON NewConfig where + toJSON NewConfig{..} = object ["workspace" .= workspace, "package" .= package] + toEncoding NewConfig{..} = pairs ("package" .= package <> "workspace" .= workspace) + +data PackageConfig = PackageConfig + { name :: Text + , publish :: Maybe NewPublishConfig + , dependencies :: Set PackageName + } deriving (Generic) + +instance ToJSON PackageConfig where + toJSON = genericToJSON customOptions + +data NewPublishConfig = NewPublishConfig + { version :: Maybe Text + , license :: Maybe Text + } deriving (Generic) + +instance ToJSON NewPublishConfig where + toJSON = genericToJSON customOptions + +data ExtraPackage = ExtraPackage + { git :: Text + , ref :: Text + , dependencies :: Set PackageName + } deriving (Generic) + +instance ToJSON ExtraPackage + +data BackendConfig = BackendConfig { cmd :: Text } + deriving (Generic) + +instance ToJSON BackendConfig + +data WorkspaceConfig = WorkspaceConfig + { package_set :: PackageSetAddress + , backend :: Maybe BackendConfig + , extra_packages :: Map PackageName ExtraPackage + } deriving (Generic) + +instance ToJSON WorkspaceConfig where + toJSON = genericToJSON customOptions + +newtype PackageSetAddress = PackageSetAddress Text + +instance ToJSON PackageSetAddress where + toJSON (PackageSetAddress url) = object ["url" .= url] + +customOptions :: Options +customOptions = defaultOptions + { omitNothingFields = True + } + +toExtraPackage :: Package -> Maybe ExtraPackage +toExtraPackage Package { dependencies, location } = case location of + Local {} -> Nothing + Remote { repo, version } -> Just (ExtraPackage { git = unRepo repo, ref = version, dependencies = dependencies }) + +migrate :: (HasLogFunc env, HasConfig env) => RIO env () +migrate = do + -- Fish out the package set url from the packages.dhall + rawPackageSet <- liftIO $ Dhall.readRawExpr Spago.PackageSet.packagesPath + packageSetUrl <- case rawPackageSet of + Nothing -> die [ display Messages.cannotFindPackages ] + Just (_, expr) + | (current:_) <- foldMap newPackageSetUrl expr + -> pure (renderUrl current) + Just _ -> die [ display Messages.cannotFindPackageImport ] + logDebug $ "New package-set URL: " <> display packageSetUrl + -- Now we _fetch_ this package set, so that we know which packages are there + logDebug "Fetching the package set.." + request <- Http.parseRequest $ Text.unpack packageSetUrl + PackageSet { packagesDB = remotePackagesDB } <- Http.responseBody <$> Http.httpJSON request + -- Then we get the current package set as read by spago - this includes overrides + logDebug "Reading the local package set.." + PackageSet { packagesDB } <- view (the @PackageSet) + -- Now we can run the difference between them, and add it as extra_packages in the new config + -- Note: we don't just look for things that are not in the remote set, also things that are different! + let extra_packages = Map.mapMaybe toExtraPackage $ Map.differenceWith (\p r -> if p == r then Nothing else Just p) packagesDB remotePackagesDB + -- Get the config, and the fields that we want + Config { alternateBackend, name, dependencies, migrateConfig } <- view (the @Config) + let publish = case migrateConfig of + Left _ -> Nothing + Right (MigrateConfig {..}) -> Just $ NewPublishConfig { version = Just migrateVersion, license = Just migrateLicense } + let backend = fmap (\cmd -> BackendConfig{..}) alternateBackend + -- TODO: we probably want a flag that says "nevermind my package set, give me the latest set from the registry" + let workspace = WorkspaceConfig { package_set = PackageSetAddress packageSetUrl, backend = backend, extra_packages = extra_packages } + let package = PackageConfig{..} + let newConfig = NewConfig{..} + -- Write the new one to YAML + logInfo "Writing the new config format to spago.yaml..." + liftIO $ Data.Yaml.encodeFile "spago.yaml" newConfig + + where + -- Need to go from e.g. https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220921/packages.dhall + -- to: https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.4-20220725/packages.json + newPackageSetUrl :: Dhall.Import -> [Dhall.URL] + newPackageSetUrl (Dhall.Import + { importHashed = Dhall.ImportHashed + { importType = Dhall.Remote Dhall.URL + { authority = "github.com" + , path = Dhall.File + { file = "packages.dhall" + , directory = Dhall.Directory + { components = [ currentTag, "download", "releases", repo, org ]} + } + , .. + } + } + }) = + let components = [ currentTag, repo, org ] + directory = Dhall.Directory{..} + authority = "raw.githubusercontent.com" + newPath = Dhall.File{ file = "packages.json", .. } + in [Dhall.URL { path = newPath, ..}] + newPackageSetUrl _ = [] + + +-------------- From Dhall.URL + +renderUrl :: URL -> Text +renderUrl url = + schemeText + <> authority + <> pathText + <> queryText + where + URL {..} = url + + File {..} = path + + Directory {..} = directory + + schemeText = case scheme of + HTTP -> "http://" + HTTPS -> "https://" + + pathText = + foldMap renderComponent (reverse components) + <> renderComponent file + + queryText = foldMap renderQuery query + + renderComponent :: Text -> Text + renderComponent component = "/" <> URI.Encode.encodeText component + + renderQuery :: Text -> Text + renderQuery query' = "?" <> query' diff --git a/src/Spago/Packages.hs b/src/Spago/Packages.hs index 34b30e0fe..9fb6a136b 100644 --- a/src/Spago/Packages.hs +++ b/src/Spago/Packages.hs @@ -102,7 +102,7 @@ getTransitiveDeps deps = do Just allDeps -> pure (allDeps, mempty, mempty) Nothing | Just packageInfo@Package{..} <- Map.lookup dep packagesDB -> do - (childDeps, notFoundErrors, cycleErrors) <- fold <$> traverse (go (Set.insert dep seen)) dependencies + (childDeps, notFoundErrors, cycleErrors) <- fold <$> traverse (go (Set.insert dep seen)) (Set.toList dependencies) let allDeps = Map.insert dep packageInfo childDeps when (null notFoundErrors && null cycleErrors) $ do State.modify $ Map.insert dep allDeps diff --git a/src/Spago/Types.hs b/src/Spago/Types.hs index 142dc3986..45a1456ce 100644 --- a/src/Spago/Types.hs +++ b/src/Spago/Types.hs @@ -18,11 +18,16 @@ newtype PackageName = PackageName { packageName :: Text } -- | A package-set package. -- Matches the packages definition in Package.dhall from package-sets data Package = Package - { dependencies :: ![PackageName] -- ^ list of dependency package names + { dependencies :: !(Set PackageName) -- ^ set of dependency package names , location :: !PackageLocation -- ^ info about where the package is located } deriving (Eq, Show, Generic) +instance FromJSON Package where + parseJSON = withObject "Package" $ \o -> do + dependencies <- o .: "dependencies" + location <- Remote <$> o .: "repo" <*> o .: "version" + pure Package {..} data PackageLocation = Remote @@ -34,7 +39,6 @@ data PackageLocation } deriving (Eq, Show, Generic) - -- | This instance is to make `spago ls packages --json` work instance ToJSON PackageLocation where toJSON Remote{..} = object @@ -52,6 +56,10 @@ data PackageSet = PackageSet } deriving (Show, Generic) +instance FromJSON PackageSet where + parseJSON o = do + packages :: Map PackageName Package <- parseJSON o + pure $ PackageSet packages Nothing -- | We consider a "Repo" a "box of source to include in the build" -- This can have different nature: @@ -59,6 +67,8 @@ newtype Repo = Repo { unRepo :: Text } deriving (Eq, Show, Generic) instance ToJSON Repo +instance FromJSON Repo where + parseJSON = withText "Repo" $ \t -> pure (Repo t) instance Dhall.FromDhall Repo where autoWith _ = makeRepo <$> Dhall.strictText @@ -202,8 +212,14 @@ data Config = Config , alternateBackend :: Maybe Text , configSourcePaths :: Set SourcePath , publishConfig :: Either (Dhall.ReadError Void) PublishConfig + , migrateConfig :: Either (Dhall.ReadError Void) MigrateConfig } deriving (Show, Generic) +-- | Extra fields only needed when migrating to the new Spago +data MigrateConfig = MigrateConfig + { migrateLicense :: Text + , migrateVersion :: Text + } deriving (Show, Generic) -- | The extra fields that are only needed for publishing libraries. data PublishConfig = PublishConfig diff --git a/stack.yaml b/stack.yaml index 9fa146b94..5e8b51c15 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-18.24 +resolver: nightly-2022-11-03 packages: - . extra-deps: diff --git a/test/SpagoSpec.hs b/test/SpagoSpec.hs index 786e946bd..f7f6e2f8f 100644 --- a/test/SpagoSpec.hs +++ b/test/SpagoSpec.hs @@ -13,9 +13,10 @@ import Utils (checkFileHasInfix, checkFixture, checkFileE readFixture, runFor, shouldBeFailure, shouldBeFailureInfix, shouldBeFailureStderr, shouldBeSuccess, shouldBeSuccessOutput, shouldBeSuccessOutputWithErr, shouldBeSuccessStderr, spago, - withCwd, withEnvVar, cpFixture) + spagoNext, withCwd, withEnvVar, cpFixture) import qualified Spago.Cmd as Cmd import qualified Data.Versions as Version +import qualified System.Info import System.Directory.Extra (getCurrentDirectory) @@ -127,6 +128,20 @@ spec = runIO getUsingEsModules >>= \usingEsModules -> around_ (setup "spago-test originalPackageSetUrl `shouldBe` templatePackageSetUrl + describe "spago migrate" $ do + it "Should migrate a spago.dhall to a new-style spago.yaml" $ do + spago ["init", "--tag", "psc-0.15.4-20220921"] >>= shouldBeSuccess + writeTextFile "spago.dhall" "{ name = \"foo\", version = \"0.0.1\", license = \"MIT\", dependencies = [\"console\", \"effect\", \"prelude\"], packages = (./packages.dhall with error.version = \"bar\"), backend = \"echo\", sources = [\"\"] }" + spago ["migrate"] >>= shouldBeSuccess + -- The new spago doesn't find purs on windows. I can't replicate this issue + -- so we'll move on for now + case System.Info.os of + "mingw32" -> pure () + _ -> do + spagoNext [ "build", "-v"] >>= shouldBeSuccess + mv "spago.yaml" "new-spago-config.yaml" + checkFixture "new-spago-config.yaml" + describe "spago install" $ do it "Subsequent installs should succeed after failed install" $ do diff --git a/test/Utils.hs b/test/Utils.hs index 8de69b371..96a49e055 100644 --- a/test/Utils.hs +++ b/test/Utils.hs @@ -21,6 +21,7 @@ module Utils , shouldBeFailureStderr , shouldBeEmptySuccess , spago + , spagoNext , withCwd , withEnvVar) where @@ -36,7 +37,7 @@ import System.Directory (removePathForcibly, doesFileExist) import qualified System.Process as Process import Test.Hspec (HasCallStack, shouldBe, shouldSatisfy) import Turtle (ExitCode (..), FilePath, Text, cd, empty, encodeString, export, - inproc, limit, need, pwd, readTextFile, strict, testdir, (), parent, cp) + inproc, limit, need, pwd, readTextFile, strict, testdir, (), parent, cp, shell) import qualified Turtle.Bytes @@ -64,6 +65,13 @@ proc cmd args = do spago :: [Text] -> IO (ExitCode, Text, Text) spago = proc "spago" +spagoNext :: [Text] -> IO (ExitCode, Text, Text) +spagoNext args = do + _ <- shell "npm install spago@next" empty + currentDir <- pwd + let path = currentDir "node_modules" "spago" "bin" "bundle.js" + proc "node" $ [Text.pack $ encodeString path] <> args + git :: [Text] -> IO (ExitCode, Text, Text) git = proc "git" diff --git a/test/fixtures/list-packages.json b/test/fixtures/list-packages.json index f30d0211b..a9ad9e53c 100644 --- a/test/fixtures/list-packages.json +++ b/test/fixtures/list-packages.json @@ -1,313 +1,313 @@ -{"version":"v5.1.2","repo":{"contents":"https://github.com/slamdata/purescript-aff.git","tag":"Remote"},"packageName":"aff"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/slamdata/purescript-aff-bus.git","tag":"Remote"},"packageName":"aff-bus"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-aff-coroutines.git","tag":"Remote"},"packageName":"aff-coroutines"} -{"version":"v2.1.0","repo":{"contents":"https://github.com/nwolverson/purescript-aff-promise.git","tag":"Remote"},"packageName":"aff-promise"} -{"version":"v1.2.1","repo":{"contents":"https://github.com/Unisay/purescript-aff-retry.git","tag":"Remote"},"packageName":"aff-retry"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/hdgarrood/purescript-ansi.git","tag":"Remote"},"packageName":"ansi"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut.git","tag":"Remote"},"packageName":"argonaut"} -{"version":"v6.0.2","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-codecs.git","tag":"Remote"},"packageName":"argonaut-codecs"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-core.git","tag":"Remote"},"packageName":"argonaut-core"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-generic.git","tag":"Remote"},"packageName":"argonaut-generic"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-traversals.git","tag":"Remote"},"packageName":"argonaut-traversals"} -{"version":"v0.0.2","repo":{"contents":"https://github.com/klntsky/purescript-array-views.git","tag":"Remote"},"packageName":"array-views"} -{"version":"v10.0.1","repo":{"contents":"https://github.com/jacereda/purescript-arraybuffer.git","tag":"Remote"},"packageName":"arraybuffer"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-arraybuffer-types.git","tag":"Remote"},"packageName":"arraybuffer-types"} -{"version":"v5.3.1","repo":{"contents":"https://github.com/purescript/purescript-arrays.git","tag":"Remote"},"packageName":"arrays"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-assert.git","tag":"Remote"},"packageName":"assert"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/slamdata/purescript-avar.git","tag":"Remote"},"packageName":"avar"} -{"version":"v0.0.6","repo":{"contents":"https://github.com/menelaos/purescript-b64.git","tag":"Remote"},"packageName":"b64"} -{"version":"v1.0.3","repo":{"contents":"https://github.com/oreshinya/purescript-basic-auth.git","tag":"Remote"},"packageName":"basic-auth"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/paf31/purescript-behaviors.git","tag":"Remote"},"packageName":"behaviors"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-bifunctors.git","tag":"Remote"},"packageName":"bifunctors"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-bigints.git","tag":"Remote"},"packageName":"bigints"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/drewolson/purescript-biscotti-cookie.git","tag":"Remote"},"packageName":"biscotti-cookie"} -{"version":"v0.1.1","repo":{"contents":"https://github.com/drewolson/purescript-biscotti-session.git","tag":"Remote"},"packageName":"biscotti-session"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/klntsky/purescript-bower-json.git","tag":"Remote"},"packageName":"bower-json"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain.git","tag":"Remote"},"packageName":"bucketchain"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-basic-auth.git","tag":"Remote"},"packageName":"bucketchain-basic-auth"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-conditional.git","tag":"Remote"},"packageName":"bucketchain-conditional"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-cors.git","tag":"Remote"},"packageName":"bucketchain-cors"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-csrf.git","tag":"Remote"},"packageName":"bucketchain-csrf"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-header-utils.git","tag":"Remote"},"packageName":"bucketchain-header-utils"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-health.git","tag":"Remote"},"packageName":"bucketchain-health"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-history-api-fallback.git","tag":"Remote"},"packageName":"bucketchain-history-api-fallback"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-logger.git","tag":"Remote"},"packageName":"bucketchain-logger"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-secure.git","tag":"Remote"},"packageName":"bucketchain-secure"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-simple-api.git","tag":"Remote"},"packageName":"bucketchain-simple-api"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-sslify.git","tag":"Remote"},"packageName":"bucketchain-sslify"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-static.git","tag":"Remote"},"packageName":"bucketchain-static"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/rightfold/purescript-bytestrings.git","tag":"Remote"},"packageName":"bytestrings"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-canvas.git","tag":"Remote"},"packageName":"canvas"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/purescript/purescript-catenable-lists.git","tag":"Remote"},"packageName":"catenable-lists"} -{"version":"v3.1.0","repo":{"contents":"https://github.com/natefaubion/purescript-checked-exceptions.git","tag":"Remote"},"packageName":"checked-exceptions"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/icyrockcom/purescript-cheerio.git","tag":"Remote"},"packageName":"cheerio"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-chirashi.git","tag":"Remote"},"packageName":"chirashi"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-chocopie.git","tag":"Remote"},"packageName":"choco-pie"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-colors.git","tag":"Remote"},"packageName":"colors"} -{"version":"v0.3.9","repo":{"contents":"https://github.com/ajnsit/purescript-concur.git","tag":"Remote"},"packageName":"concur-react"} -{"version":"v4.2.0","repo":{"contents":"https://github.com/purescript/purescript-console.git","tag":"Remote"},"packageName":"console"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-const.git","tag":"Remote"},"packageName":"const"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript/purescript-contravariant.git","tag":"Remote"},"packageName":"contravariant"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-control.git","tag":"Remote"},"packageName":"control"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-coroutines.git","tag":"Remote"},"packageName":"coroutines"} -{"version":"v2.0.1","repo":{"contents":"https://github.com/oreshinya/purescript-crypto.git","tag":"Remote"},"packageName":"crypto"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/slamdata/purescript-css.git","tag":"Remote"},"packageName":"css"} -{"version":"v0.0.2","repo":{"contents":"https://github.com/danieljharvey/purescript-cssom.git","tag":"Remote"},"packageName":"cssom"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/i-am-tom/purescript-data-algebrae.git","tag":"Remote"},"packageName":"data-algebrae"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript/purescript-datetime.git","tag":"Remote"},"packageName":"datetime"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/garyb/purescript-debug.git","tag":"Remote"},"packageName":"debug"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-decimals.git","tag":"Remote"},"packageName":"decimals"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-distributive.git","tag":"Remote"},"packageName":"distributive"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/nwolverson/purescript-dom-filereader.git","tag":"Remote"},"packageName":"dom-filereader"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/slamdata/purescript-dom-indexed.git","tag":"Remote"},"packageName":"dom-indexed"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/nsaunders/purescript-dotenv.git","tag":"Remote"},"packageName":"dotenv"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/paf31/purescript-drawing.git","tag":"Remote"},"packageName":"drawing"} -{"version":"v2.0.1","repo":{"contents":"https://github.com/purescript/purescript-effect.git","tag":"Remote"},"packageName":"effect"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript/purescript-either.git","tag":"Remote"},"packageName":"either"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/cdepillabout/purescript-email-validate.git","tag":"Remote"},"packageName":"email-validate"} -{"version":"v0.0.6","repo":{"contents":"https://github.com/menelaos/purescript-encoding.git","tag":"Remote"},"packageName":"encoding"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript/purescript-enums.git","tag":"Remote"},"packageName":"enums"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/passy/purescript-errors.git","tag":"Remote"},"packageName":"errors"} -{"version":"v1.3.0","repo":{"contents":"https://github.com/paf31/purescript-event.git","tag":"Remote"},"packageName":"event"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-exceptions.git","tag":"Remote"},"packageName":"exceptions"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-exists.git","tag":"Remote"},"packageName":"exists"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/Risto-Stevcev/purescript-exitcodes.git","tag":"Remote"},"packageName":"exitcodes"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-expect-inferred.git","tag":"Remote"},"packageName":"expect-inferred"} -{"version":"v0.8.0","repo":{"contents":"https://github.com/nkly/purescript-express.git","tag":"Remote"},"packageName":"express"} -{"version":"v3.0.2","repo":{"contents":"https://github.com/LiamGoodacre/purescript-filterable.git","tag":"Remote"},"packageName":"filterable"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/slamdata/purescript-fixed-points.git","tag":"Remote"},"packageName":"fixed-points"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-flare.git","tag":"Remote"},"packageName":"flare"} -{"version":"v0.1.1","repo":{"contents":"https://github.com/athanclark/purescript-float32.git","tag":"Remote"},"packageName":"float32"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/i-am-the-slime/purescript-flow-id.git","tag":"Remote"},"packageName":"flow-id"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript/purescript-foldable-traversable.git","tag":"Remote"},"packageName":"foldable-traversable"} -{"version":"v5.2.0","repo":{"contents":"https://github.com/paf31/purescript-folds.git","tag":"Remote"},"packageName":"folds"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript/purescript-foreign.git","tag":"Remote"},"packageName":"foreign"} -{"version":"v10.0.0","repo":{"contents":"https://github.com/paf31/purescript-foreign-generic.git","tag":"Remote"},"packageName":"foreign-generic"} -{"version":"v2.0.3","repo":{"contents":"https://github.com/purescript/purescript-foreign-object.git","tag":"Remote"},"packageName":"foreign-object"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/slamdata/purescript-fork.git","tag":"Remote"},"packageName":"fork"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-form-urlencoded.git","tag":"Remote"},"packageName":"form-urlencoded"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-format.git","tag":"Remote"},"packageName":"format"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/justinwoo/format-nix.git","tag":"Remote"},"packageName":"format-nix"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/slamdata/purescript-formatters.git","tag":"Remote"},"packageName":"formatters"} -{"version":"v5.2.0","repo":{"contents":"https://github.com/purescript/purescript-free.git","tag":"Remote"},"packageName":"free"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/ethul/purescript-freeap.git","tag":"Remote"},"packageName":"freeap"} -{"version":"v1.4.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom.git","tag":"Remote"},"packageName":"freedom"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-now.git","tag":"Remote"},"packageName":"freedom-now"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-portal.git","tag":"Remote"},"packageName":"freedom-portal"} -{"version":"v1.0.1","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-router.git","tag":"Remote"},"packageName":"freedom-router"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-transition.git","tag":"Remote"},"packageName":"freedom-transition"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-virtualized.git","tag":"Remote"},"packageName":"freedom-virtualized"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-window-resize.git","tag":"Remote"},"packageName":"freedom-window-resize"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-freet.git","tag":"Remote"},"packageName":"freet"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-functions.git","tag":"Remote"},"packageName":"functions"} -{"version":"v3.1.1","repo":{"contents":"https://github.com/purescript/purescript-functors.git","tag":"Remote"},"packageName":"functors"} -{"version":"v0.2.1","repo":{"contents":"https://github.com/citizennet/purescript-fuzzy.git","tag":"Remote"},"packageName":"fuzzy"} -{"version":"v2.1.1","repo":{"contents":"https://github.com/purescript/purescript-gen.git","tag":"Remote"},"packageName":"gen"} -{"version":"v6.1.1","repo":{"contents":"https://github.com/purescript/purescript-generics-rep.git","tag":"Remote"},"packageName":"generics-rep"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-globals.git","tag":"Remote"},"packageName":"globals"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/justinwoo/purescript-gomtang-basic.git","tag":"Remote"},"packageName":"gomtang-basic"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/morganthomas/purescript-group.git","tag":"Remote"},"packageName":"group"} -{"version":"v5.0.0-rc.7","repo":{"contents":"https://github.com/slamdata/purescript-halogen.git","tag":"Remote"},"packageName":"halogen"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/slamdata/purescript-halogen-bootstrap.git","tag":"Remote"},"packageName":"halogen-bootstrap"} -{"version":"v0.1.4","repo":{"contents":"https://github.com/mschristiansen/purescript-halogen-bootstrap4.git","tag":"Remote"},"packageName":"halogen-bootstrap4"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/slamdata/purescript-halogen-css.git","tag":"Remote"},"packageName":"halogen-css"} -{"version":"v1.0.0-rc.1","repo":{"contents":"https://github.com/thomashoneyman/purescript-halogen-formless.git","tag":"Remote"},"packageName":"halogen-formless"} -{"version":"v5.0.0-rc.3","repo":{"contents":"https://github.com/citizennet/purescript-halogen-select.git","tag":"Remote"},"packageName":"halogen-select"} -{"version":"v6.1.0","repo":{"contents":"https://github.com/slamdata/purescript-halogen-vdom.git","tag":"Remote"},"packageName":"halogen-vdom"} -{"version":"v0.4.1","repo":{"contents":"https://github.com/natefaubion/purescript-heterogeneous.git","tag":"Remote"},"packageName":"heterogeneous"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/matthew-hilty/purescript-higher-order.git","tag":"Remote"},"packageName":"higher-order"} -{"version":"v4.0.2","repo":{"contents":"https://github.com/purescript-contrib/purescript-http-methods.git","tag":"Remote"},"packageName":"http-methods"} -{"version":"v0.9.0","repo":{"contents":"https://github.com/cprussin/purescript-httpure.git","tag":"Remote"},"packageName":"httpure"} -{"version":"v0.1.1","repo":{"contents":"https://github.com/drewolson/purescript-httpure-contrib-biscotti.git","tag":"Remote"},"packageName":"httpure-contrib-biscotti"} -{"version":"v0.11.0","repo":{"contents":"https://github.com/purescript-hyper/hyper.git","tag":"Remote"},"packageName":"hyper"} -{"version":"v0.11.0","repo":{"contents":"https://github.com/purescript-hyper/purescript-hypertrout.git","tag":"Remote"},"packageName":"hypertrout"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-identity.git","tag":"Remote"},"packageName":"identity"} -{"version":"v2.1.0","repo":{"contents":"https://github.com/oreshinya/purescript-identy.git","tag":"Remote"},"packageName":"identy"} -{"version":"v1.1.0","repo":{"contents":"https://github.com/garyb/purescript-indexed-monad.git","tag":"Remote"},"packageName":"indexed-monad"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-integers.git","tag":"Remote"},"packageName":"integers"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-invariant.git","tag":"Remote"},"packageName":"invariant"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-jajanmen.git","tag":"Remote"},"packageName":"jajanmen"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-jquery.git","tag":"Remote"},"packageName":"jquery"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-js-date.git","tag":"Remote"},"packageName":"js-date"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-js-timers.git","tag":"Remote"},"packageName":"js-timers"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/reactormonk/purescript-json-pointer.git","tag":"Remote"},"packageName":"json-pointer"} -{"version":"v0.0.1","repo":{"contents":"https://github.com/felixmulder/purescript-json-schema.git","tag":"Remote"},"packageName":"json-schema"} -{"version":"v0.0.7","repo":{"contents":"https://github.com/menelaos/purescript-jwt.git","tag":"Remote"},"packageName":"jwt"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-kancho.git","tag":"Remote"},"packageName":"kancho"} -{"version":"v1.0.1","repo":{"contents":"https://github.com/justinwoo/purescript-kishimen.git","tag":"Remote"},"packageName":"kishimen"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-lazy.git","tag":"Remote"},"packageName":"lazy"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript/purescript-lcg.git","tag":"Remote"},"packageName":"lcg"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/paf31/purescript-leibniz.git","tag":"Remote"},"packageName":"leibniz"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-lenient-html-parser.git","tag":"Remote"},"packageName":"lenient-html-parser"} -{"version":"v5.4.1","repo":{"contents":"https://github.com/purescript/purescript-lists.git","tag":"Remote"},"packageName":"lists"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-machines.git","tag":"Remote"},"packageName":"machines"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-makkori.git","tag":"Remote"},"packageName":"makkori"} -{"version":"v2.1.1","repo":{"contents":"https://github.com/purescript/purescript-math.git","tag":"Remote"},"packageName":"math"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/kritzcreek/purescript-matrices.git","tag":"Remote"},"packageName":"matrices"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript/purescript-maybe.git","tag":"Remote"},"packageName":"maybe"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-media-types.git","tag":"Remote"},"packageName":"media-types"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/paf31/purescript-memoize.git","tag":"Remote"},"packageName":"memoize"} -{"version":"v0.13.4","repo":{"contents":"https://github.com/spacchetti/purescript-metadata.git","tag":"Remote"},"packageName":"metadata"} -{"version":"v7.2.1","repo":{"contents":"https://github.com/justinwoo/purescript-milkis.git","tag":"Remote"},"packageName":"milkis"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript/purescript-minibench.git","tag":"Remote"},"packageName":"minibench"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/Thimoteus/purescript-mmorph.git","tag":"Remote"},"packageName":"mmorph"} -{"version":"v1.3.1","repo":{"contents":"https://github.com/cprussin/purescript-monad-logger.git","tag":"Remote"},"packageName":"monad-logger"} -{"version":"v0.5.0","repo":{"contents":"https://github.com/mlang/purescript-monad-loops.git","tag":"Remote"},"packageName":"monad-loops"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/i-am-tom/purescript-money.git","tag":"Remote"},"packageName":"money"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-motsunabe.git","tag":"Remote"},"packageName":"motsunabe"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/oreshinya/purescript-mysql.git","tag":"Remote"},"packageName":"mysql"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-naporitan.git","tag":"Remote"},"packageName":"naporitan"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/LiamGoodacre/purescript-naturals.git","tag":"Remote"},"packageName":"naturals"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/purescript/purescript-newtype.git","tag":"Remote"},"packageName":"newtype"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-buffer.git","tag":"Remote"},"packageName":"node-buffer"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-child-process.git","tag":"Remote"},"packageName":"node-child-process"} -{"version":"v0.0.2","repo":{"contents":"https://github.com/cprussin/purescript-node-electron.git","tag":"Remote"},"packageName":"node-electron"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/purescript-node/purescript-node-fs.git","tag":"Remote"},"packageName":"node-fs"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-fs-aff.git","tag":"Remote"},"packageName":"node-fs-aff"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/justinwoo/purescript-node-he.git","tag":"Remote"},"packageName":"node-he"} -{"version":"v5.0.2","repo":{"contents":"https://github.com/purescript-node/purescript-node-http.git","tag":"Remote"},"packageName":"node-http"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-net.git","tag":"Remote"},"packageName":"node-net"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-path.git","tag":"Remote"},"packageName":"node-path"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/epost/purescript-node-postgres.git","tag":"Remote"},"packageName":"node-postgres"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-process.git","tag":"Remote"},"packageName":"node-process"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-node/purescript-node-readline.git","tag":"Remote"},"packageName":"node-readline"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-node-sqlite3.git","tag":"Remote"},"packageName":"node-sqlite3"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-node/purescript-node-streams.git","tag":"Remote"},"packageName":"node-streams"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-node-telegram-bot-api.git","tag":"Remote"},"packageName":"node-telegram-bot-api"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-node-url.git","tag":"Remote"},"packageName":"node-url"} -{"version":"v2.0.2","repo":{"contents":"https://github.com/oreshinya/purescript-nodemailer.git","tag":"Remote"},"packageName":"nodemailer"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript/purescript-nonempty.git","tag":"Remote"},"packageName":"nonempty"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-now.git","tag":"Remote"},"packageName":"now"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-nullable.git","tag":"Remote"},"packageName":"nullable"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-numbers.git","tag":"Remote"},"packageName":"numbers"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-options.git","tag":"Remote"},"packageName":"options"} -{"version":"v3.0.1","repo":{"contents":"https://github.com/f-o-a-m/purescript-optparse.git","tag":"Remote"},"packageName":"optparse"} -{"version":"v1.6.1","repo":{"contents":"https://github.com/purescript/purescript-ordered-collections.git","tag":"Remote"},"packageName":"ordered-collections"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-orders.git","tag":"Remote"},"packageName":"orders"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/paf31/purescript-pairing.git","tag":"Remote"},"packageName":"pairing"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/sharkdp/purescript-pairs.git","tag":"Remote"},"packageName":"pairs"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-parallel.git","tag":"Remote"},"packageName":"parallel"} -{"version":"v5.0.3","repo":{"contents":"https://github.com/purescript-contrib/purescript-parsing.git","tag":"Remote"},"packageName":"parsing"} -{"version":"v2.0.1","repo":{"contents":"https://github.com/purescript/purescript-partial.git","tag":"Remote"},"packageName":"partial"} -{"version":"v7.0.1","repo":{"contents":"https://github.com/slamdata/purescript-pathy.git","tag":"Remote"},"packageName":"pathy"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/brandonhamilton/purescript-phoenix.git","tag":"Remote"},"packageName":"phoenix"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/felixSchl/purescript-pipes.git","tag":"Remote"},"packageName":"pipes"} -{"version":"v0.4.0","repo":{"contents":"https://github.com/paluh/purescript-pointed-list.git","tag":"Remote"},"packageName":"pointed-list"} -{"version":"v0.8.0","repo":{"contents":"https://github.com/paluh/purescript-polyform.git","tag":"Remote"},"packageName":"polyform"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-node/purescript-posix-types.git","tag":"Remote"},"packageName":"posix-types"} -{"version":"v5.1.1","repo":{"contents":"https://github.com/awakesecurity/purescript-precise-datetime.git","tag":"Remote"},"packageName":"precise-datetime"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript/purescript-prelude.git","tag":"Remote"},"packageName":"prelude"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/gcanti/purescript-prettier.git","tag":"Remote"},"packageName":"prettier"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-profunctor.git","tag":"Remote"},"packageName":"profunctor"} -{"version":"v6.2.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-profunctor-lenses.git","tag":"Remote"},"packageName":"profunctor-lenses"} -{"version":"v3.1.1","repo":{"contents":"https://github.com/thimoteus/purescript-promises.git","tag":"Remote"},"packageName":"promises"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/purescript/purescript-proxy.git","tag":"Remote"},"packageName":"proxy"} -{"version":"v1.1.0","repo":{"contents":"https://github.com/matthew-hilty/purescript-proxying.git","tag":"Remote"},"packageName":"proxying"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/natefaubion/purescript-psa-utils.git","tag":"Remote"},"packageName":"psa-utils"} -{"version":"v15.0.1","repo":{"contents":"https://github.com/kRITZCREEK/purescript-psc-ide.git","tag":"Remote"},"packageName":"psc-ide"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-psci-support.git","tag":"Remote"},"packageName":"psci-support"} -{"version":"v0.10.1","repo":{"contents":"https://github.com/Dretch/purescript-querydsl.git","tag":"Remote"},"packageName":"querydsl"} -{"version":"v6.1.0","repo":{"contents":"https://github.com/purescript/purescript-quickcheck.git","tag":"Remote"},"packageName":"quickcheck"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/garyb/purescript-quickcheck-laws.git","tag":"Remote"},"packageName":"quickcheck-laws"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/rightfold/purescript-quotient.git","tag":"Remote"},"packageName":"quotient"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/danieljharvey/purescript-radox.git","tag":"Remote"},"packageName":"radox"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-random.git","tag":"Remote"},"packageName":"random"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/anttih/purescript-rationals.git","tag":"Remote"},"packageName":"rationals"} -{"version":"v0.1.1","repo":{"contents":"https://github.com/reactormonk/purescript-rave.git","tag":"Remote"},"packageName":"rave"} -{"version":"v8.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-react.git","tag":"Remote"},"packageName":"react"} -{"version":"v11.0.0","repo":{"contents":"https://github.com/lumihq/purescript-react-basic.git","tag":"Remote"},"packageName":"react-basic"} -{"version":"v2.0.3","repo":{"contents":"https://github.com/spicydonuts/purescript-react-basic-hooks.git","tag":"Remote"},"packageName":"react-basic-hooks"} -{"version":"v0.1.3","repo":{"contents":"https://github.com/dwhitney/purescript-react-basic-native.git","tag":"Remote"},"packageName":"react-basic-native"} -{"version":"v6.1.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-react-dom.git","tag":"Remote"},"packageName":"react-dom"} -{"version":"v0.0.5","repo":{"contents":"https://github.com/danieljharvey/purescript-react-radox.git","tag":"Remote"},"packageName":"react-radox"} -{"version":"v0.0.2","repo":{"contents":"https://github.com/danieljharvey/purescript-react-stylesheet.git","tag":"Remote"},"packageName":"react-stylesheet"} -{"version":"v1.0.1","repo":{"contents":"https://github.com/truqu/purescript-read.git","tag":"Remote"},"packageName":"read"} -{"version":"v2.0.1","repo":{"contents":"https://github.com/purescript/purescript-record.git","tag":"Remote"},"packageName":"record"} -{"version":"v3.0.1","repo":{"contents":"https://github.com/justinwoo/purescript-record-extra.git","tag":"Remote"},"packageName":"record-extra"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/kcsongor/purescript-record-format.git","tag":"Remote"},"packageName":"record-format"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-redux-devtools.git","tag":"Remote"},"packageName":"redux-devtools"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/danieljharvey/purescript-refined.git","tag":"Remote"},"packageName":"refined"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-refs.git","tag":"Remote"},"packageName":"refs"} -{"version":"v4.2.0","repo":{"contents":"https://github.com/krisajenkins/purescript-remotedata.git","tag":"Remote"},"packageName":"remotedata"} -{"version":"v1.0.3","repo":{"contents":"https://github.com/ad-si/purescript-result.git","tag":"Remote"},"packageName":"result"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/f-o-a-m/purescript-ring-modules.git","tag":"Remote"},"packageName":"ring-modules"} -{"version":"v9.0.0","repo":{"contents":"https://github.com/slamdata/purescript-routing.git","tag":"Remote"},"packageName":"routing"} -{"version":"v0.4.0","repo":{"contents":"https://github.com/natefaubion/purescript-routing-duplex.git","tag":"Remote"},"packageName":"routing-duplex"} -{"version":"v3.0.1","repo":{"contents":"https://github.com/natefaubion/purescript-run.git","tag":"Remote"},"packageName":"run"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/sigilion/purescript-run-profunctor-lenses.git","tag":"Remote"},"packageName":"run-profunctor-lenses"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/natefaubion/purescript-run-streaming.git","tag":"Remote"},"packageName":"run-streaming"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/paf31/purescript-safely.git","tag":"Remote"},"packageName":"safely"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/klntsky/purescript-search-trie.git","tag":"Remote"},"packageName":"search-trie"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/jamieyung/purescript-selection-foldable.git","tag":"Remote"},"packageName":"selection-foldable"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript/purescript-semirings.git","tag":"Remote"},"packageName":"semirings"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/MichaelXavier/purescript-server-sent-events.git","tag":"Remote"},"packageName":"server-sent-events"} -{"version":"v0.3.0","repo":{"contents":"https://github.com/justinwoo/purescript-shoronpo.git","tag":"Remote"},"packageName":"shoronpo"} -{"version":"v10.1.0","repo":{"contents":"https://github.com/bodil/purescript-signal.git","tag":"Remote"},"packageName":"signal"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-sijidou.git","tag":"Remote"},"packageName":"sijidou"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/oreshinya/purescript-simple-emitter.git","tag":"Remote"},"packageName":"simple-emitter"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/oreshinya/purescript-simple-i18n.git","tag":"Remote"},"packageName":"simple-i18n"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json.git","tag":"Remote"},"packageName":"simple-json"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json-generics.git","tag":"Remote"},"packageName":"simple-json-generics"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json-utils.git","tag":"Remote"},"packageName":"simple-json-utils"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/oreshinya/purescript-simple-jwt.git","tag":"Remote"},"packageName":"simple-jwt"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/reactormonk/purescript-simple-timestamp.git","tag":"Remote"},"packageName":"simple-timestamp"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/bodil/purescript-sized-vectors.git","tag":"Remote"},"packageName":"sized-vectors"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/thomashoneyman/purescript-slug.git","tag":"Remote"},"packageName":"slug"} -{"version":"v12.3.0","repo":{"contents":"https://github.com/bodil/purescript-smolder.git","tag":"Remote"},"packageName":"smolder"} -{"version":"v1.0.1","repo":{"contents":"https://github.com/LukaJCB/purescript-snabbdom.git","tag":"Remote"},"packageName":"snabbdom"} -{"version":"v2.1.0","repo":{"contents":"https://github.com/SodiumFRP/purescript-sodium.git","tag":"Remote"},"packageName":"sodium"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-spec/purescript-spec.git","tag":"Remote"},"packageName":"spec"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/owickstrom/purescript-spec-discovery.git","tag":"Remote"},"packageName":"spec-discovery"} -{"version":"v3.1.0","repo":{"contents":"https://github.com/owickstrom/purescript-spec-quickcheck.git","tag":"Remote"},"packageName":"spec-quickcheck"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/natefaubion/purescript-spork.git","tag":"Remote"},"packageName":"spork"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-st.git","tag":"Remote"},"packageName":"st"} -{"version":"v5.0.1","repo":{"contents":"https://github.com/paf31/purescript-string-parsers.git","tag":"Remote"},"packageName":"string-parsers"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript/purescript-strings.git","tag":"Remote"},"packageName":"strings"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-strings-extra.git","tag":"Remote"},"packageName":"strings-extra"} -{"version":"v0.0.10","repo":{"contents":"https://github.com/menelaos/purescript-stringutils.git","tag":"Remote"},"packageName":"stringutils"} -{"version":"v4.1.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-strongcheck.git","tag":"Remote"},"packageName":"strongcheck"} -{"version":"v1.1.0","repo":{"contents":"https://github.com/matthew-hilty/purescript-struct.git","tag":"Remote"},"packageName":"struct"} -{"version":"v0.0.3","repo":{"contents":"https://github.com/danieljharvey/purescript-stylesheet.git","tag":"Remote"},"packageName":"stylesheet"} -{"version":"v0.2.0","repo":{"contents":"https://github.com/matthew-hilty/purescript-subcategory.git","tag":"Remote"},"packageName":"subcategory"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/nwolverson/purescript-suggest.git","tag":"Remote"},"packageName":"suggest"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-sunde.git","tag":"Remote"},"packageName":"sunde"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/rnons/purescript-svg-parser.git","tag":"Remote"},"packageName":"svg-parser"} -{"version":"v1.0.0","repo":{"contents":"https://github.com/rnons/purescript-svg-parser-halogen.git","tag":"Remote"},"packageName":"svg-parser-halogen"} -{"version":"v4.1.0","repo":{"contents":"https://github.com/purescript/purescript-tailrec.git","tag":"Remote"},"packageName":"tailrec"} -{"version":"v15.0.0","repo":{"contents":"https://github.com/bodil/purescript-test-unit.git","tag":"Remote"},"packageName":"test-unit"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-contrib/purescript-these.git","tag":"Remote"},"packageName":"these"} -{"version":"v1.1.0","repo":{"contents":"https://github.com/matthew-hilty/purescript-tolerant-argonaut.git","tag":"Remote"},"packageName":"tolerant-argonaut"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/justinwoo/purescript-toppokki.git","tag":"Remote"},"packageName":"toppokki"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-tortellini.git","tag":"Remote"},"packageName":"tortellini"} -{"version":"v4.2.0","repo":{"contents":"https://github.com/purescript/purescript-transformers.git","tag":"Remote"},"packageName":"transformers"} -{"version":"v0.12.1","repo":{"contents":"https://github.com/purescript-hyper/purescript-trout.git","tag":"Remote"},"packageName":"trout"} -{"version":"v5.1.0","repo":{"contents":"https://github.com/purescript/purescript-tuples.git","tag":"Remote"},"packageName":"tuples"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/purescript/purescript-type-equality.git","tag":"Remote"},"packageName":"type-equality"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-type-isequal.git","tag":"Remote"},"packageName":"type-isequal"} -{"version":"v0.0.1","repo":{"contents":"https://github.com/nsaunders/purescript-typedenv.git","tag":"Remote"},"packageName":"typedenv"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/bodil/purescript-typelevel.git","tag":"Remote"},"packageName":"typelevel"} -{"version":"v5.0.0","repo":{"contents":"https://github.com/purescript/purescript-typelevel-prelude.git","tag":"Remote"},"packageName":"typelevel-prelude"} -{"version":"v5.1.1","repo":{"contents":"https://github.com/zaquest/purescript-uint.git","tag":"Remote"},"packageName":"uint"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/ethul/purescript-undefinable.git","tag":"Remote"},"packageName":"undefinable"} -{"version":"v1.0.2","repo":{"contents":"https://github.com/bklaric/purescript-undefined.git","tag":"Remote"},"packageName":"undefined"} -{"version":"v4.0.2","repo":{"contents":"https://github.com/purescript/purescript-unfoldable.git","tag":"Remote"},"packageName":"unfoldable"} -{"version":"v4.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-unicode.git","tag":"Remote"},"packageName":"unicode"} -{"version":"v1.8.2","repo":{"contents":"https://github.com/fehrenbach/purescript-unordered-collections.git","tag":"Remote"},"packageName":"unordered-collections"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript/purescript-unsafe-coerce.git","tag":"Remote"},"packageName":"unsafe-coerce"} -{"version":"v3.0.1","repo":{"contents":"https://github.com/purescript-contrib/purescript-unsafe-reference.git","tag":"Remote"},"packageName":"unsafe-reference"} -{"version":"v7.0.0","repo":{"contents":"https://github.com/slamdata/purescript-uri.git","tag":"Remote"},"packageName":"uri"} -{"version":"v6.0.0","repo":{"contents":"https://github.com/spicydonuts/purescript-uuid.git","tag":"Remote"},"packageName":"uuid"} -{"version":"v4.2.0","repo":{"contents":"https://github.com/purescript/purescript-validation.git","tag":"Remote"},"packageName":"validation"} -{"version":"v6.0.1","repo":{"contents":"https://github.com/natefaubion/purescript-variant.git","tag":"Remote"},"packageName":"variant"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-clipboard.git","tag":"Remote"},"packageName":"web-clipboard"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-dom.git","tag":"Remote"},"packageName":"web-dom"} -{"version":"v2.0.1","repo":{"contents":"https://github.com/purescript-web/purescript-web-events.git","tag":"Remote"},"packageName":"web-events"} -{"version":"v2.2.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-file.git","tag":"Remote"},"packageName":"web-file"} -{"version":"v2.3.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-html.git","tag":"Remote"},"packageName":"web-html"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-socket.git","tag":"Remote"},"packageName":"web-socket"} -{"version":"v3.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-storage.git","tag":"Remote"},"packageName":"web-storage"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-touchevents.git","tag":"Remote"},"packageName":"web-touchevents"} -{"version":"v2.0.0","repo":{"contents":"https://github.com/purescript-web/purescript-web-uievents.git","tag":"Remote"},"packageName":"web-uievents"} -{"version":"v3.0.2","repo":{"contents":"https://github.com/purescript-web/purescript-web-xhr.git","tag":"Remote"},"packageName":"web-xhr"} -{"version":"v0.1.0","repo":{"contents":"https://github.com/justinwoo/purescript-xiaomian.git","tag":"Remote"},"packageName":"xiaomian"} -{"version":"v4.0.0","repo":{"contents":"https://github.com/paf31/purescript-yargs.git","tag":"Remote"},"packageName":"yargs"} +{"packageName":"aff","repo":{"contents":"https://github.com/slamdata/purescript-aff.git","tag":"Remote"},"version":"v5.1.2"} +{"packageName":"aff-bus","repo":{"contents":"https://github.com/slamdata/purescript-aff-bus.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"aff-coroutines","repo":{"contents":"https://github.com/purescript-contrib/purescript-aff-coroutines.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"aff-promise","repo":{"contents":"https://github.com/nwolverson/purescript-aff-promise.git","tag":"Remote"},"version":"v2.1.0"} +{"packageName":"aff-retry","repo":{"contents":"https://github.com/Unisay/purescript-aff-retry.git","tag":"Remote"},"version":"v1.2.1"} +{"packageName":"ansi","repo":{"contents":"https://github.com/hdgarrood/purescript-ansi.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"argonaut","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"argonaut-codecs","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-codecs.git","tag":"Remote"},"version":"v6.0.2"} +{"packageName":"argonaut-core","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-core.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"argonaut-generic","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-generic.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"argonaut-traversals","repo":{"contents":"https://github.com/purescript-contrib/purescript-argonaut-traversals.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"array-views","repo":{"contents":"https://github.com/klntsky/purescript-array-views.git","tag":"Remote"},"version":"v0.0.2"} +{"packageName":"arraybuffer","repo":{"contents":"https://github.com/jacereda/purescript-arraybuffer.git","tag":"Remote"},"version":"v10.0.1"} +{"packageName":"arraybuffer-types","repo":{"contents":"https://github.com/purescript-contrib/purescript-arraybuffer-types.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"arrays","repo":{"contents":"https://github.com/purescript/purescript-arrays.git","tag":"Remote"},"version":"v5.3.1"} +{"packageName":"assert","repo":{"contents":"https://github.com/purescript/purescript-assert.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"avar","repo":{"contents":"https://github.com/slamdata/purescript-avar.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"b64","repo":{"contents":"https://github.com/menelaos/purescript-b64.git","tag":"Remote"},"version":"v0.0.6"} +{"packageName":"basic-auth","repo":{"contents":"https://github.com/oreshinya/purescript-basic-auth.git","tag":"Remote"},"version":"v1.0.3"} +{"packageName":"behaviors","repo":{"contents":"https://github.com/paf31/purescript-behaviors.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"bifunctors","repo":{"contents":"https://github.com/purescript/purescript-bifunctors.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"bigints","repo":{"contents":"https://github.com/sharkdp/purescript-bigints.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"biscotti-cookie","repo":{"contents":"https://github.com/drewolson/purescript-biscotti-cookie.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"biscotti-session","repo":{"contents":"https://github.com/drewolson/purescript-biscotti-session.git","tag":"Remote"},"version":"v0.1.1"} +{"packageName":"bower-json","repo":{"contents":"https://github.com/klntsky/purescript-bower-json.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"bucketchain","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"bucketchain-basic-auth","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-basic-auth.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-conditional","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-conditional.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-cors","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-cors.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-csrf","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-csrf.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"bucketchain-header-utils","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-header-utils.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-health","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-health.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-history-api-fallback","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-history-api-fallback.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"bucketchain-logger","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-logger.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"bucketchain-secure","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-secure.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"bucketchain-simple-api","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-simple-api.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"bucketchain-sslify","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-sslify.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"bucketchain-static","repo":{"contents":"https://github.com/Bucketchain/purescript-bucketchain-static.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"bytestrings","repo":{"contents":"https://github.com/rightfold/purescript-bytestrings.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"canvas","repo":{"contents":"https://github.com/purescript-web/purescript-canvas.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"catenable-lists","repo":{"contents":"https://github.com/purescript/purescript-catenable-lists.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"checked-exceptions","repo":{"contents":"https://github.com/natefaubion/purescript-checked-exceptions.git","tag":"Remote"},"version":"v3.1.0"} +{"packageName":"cheerio","repo":{"contents":"https://github.com/icyrockcom/purescript-cheerio.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"chirashi","repo":{"contents":"https://github.com/justinwoo/purescript-chirashi.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"choco-pie","repo":{"contents":"https://github.com/justinwoo/purescript-chocopie.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"colors","repo":{"contents":"https://github.com/sharkdp/purescript-colors.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"concur-react","repo":{"contents":"https://github.com/ajnsit/purescript-concur.git","tag":"Remote"},"version":"v0.3.9"} +{"packageName":"console","repo":{"contents":"https://github.com/purescript/purescript-console.git","tag":"Remote"},"version":"v4.2.0"} +{"packageName":"const","repo":{"contents":"https://github.com/purescript/purescript-const.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"contravariant","repo":{"contents":"https://github.com/purescript/purescript-contravariant.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"control","repo":{"contents":"https://github.com/purescript/purescript-control.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"coroutines","repo":{"contents":"https://github.com/purescript-contrib/purescript-coroutines.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"crypto","repo":{"contents":"https://github.com/oreshinya/purescript-crypto.git","tag":"Remote"},"version":"v2.0.1"} +{"packageName":"css","repo":{"contents":"https://github.com/slamdata/purescript-css.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"cssom","repo":{"contents":"https://github.com/danieljharvey/purescript-cssom.git","tag":"Remote"},"version":"v0.0.2"} +{"packageName":"data-algebrae","repo":{"contents":"https://github.com/i-am-tom/purescript-data-algebrae.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"datetime","repo":{"contents":"https://github.com/purescript/purescript-datetime.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"debug","repo":{"contents":"https://github.com/garyb/purescript-debug.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"decimals","repo":{"contents":"https://github.com/sharkdp/purescript-decimals.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"distributive","repo":{"contents":"https://github.com/purescript/purescript-distributive.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"dom-filereader","repo":{"contents":"https://github.com/nwolverson/purescript-dom-filereader.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"dom-indexed","repo":{"contents":"https://github.com/slamdata/purescript-dom-indexed.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"dotenv","repo":{"contents":"https://github.com/nsaunders/purescript-dotenv.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"drawing","repo":{"contents":"https://github.com/paf31/purescript-drawing.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"effect","repo":{"contents":"https://github.com/purescript/purescript-effect.git","tag":"Remote"},"version":"v2.0.1"} +{"packageName":"either","repo":{"contents":"https://github.com/purescript/purescript-either.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"email-validate","repo":{"contents":"https://github.com/cdepillabout/purescript-email-validate.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"encoding","repo":{"contents":"https://github.com/menelaos/purescript-encoding.git","tag":"Remote"},"version":"v0.0.6"} +{"packageName":"enums","repo":{"contents":"https://github.com/purescript/purescript-enums.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"errors","repo":{"contents":"https://github.com/passy/purescript-errors.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"event","repo":{"contents":"https://github.com/paf31/purescript-event.git","tag":"Remote"},"version":"v1.3.0"} +{"packageName":"exceptions","repo":{"contents":"https://github.com/purescript/purescript-exceptions.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"exists","repo":{"contents":"https://github.com/purescript/purescript-exists.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"exitcodes","repo":{"contents":"https://github.com/Risto-Stevcev/purescript-exitcodes.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"expect-inferred","repo":{"contents":"https://github.com/justinwoo/purescript-expect-inferred.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"express","repo":{"contents":"https://github.com/nkly/purescript-express.git","tag":"Remote"},"version":"v0.8.0"} +{"packageName":"filterable","repo":{"contents":"https://github.com/LiamGoodacre/purescript-filterable.git","tag":"Remote"},"version":"v3.0.2"} +{"packageName":"fixed-points","repo":{"contents":"https://github.com/slamdata/purescript-fixed-points.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"flare","repo":{"contents":"https://github.com/sharkdp/purescript-flare.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"float32","repo":{"contents":"https://github.com/athanclark/purescript-float32.git","tag":"Remote"},"version":"v0.1.1"} +{"packageName":"flow-id","repo":{"contents":"https://github.com/i-am-the-slime/purescript-flow-id.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"foldable-traversable","repo":{"contents":"https://github.com/purescript/purescript-foldable-traversable.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"folds","repo":{"contents":"https://github.com/paf31/purescript-folds.git","tag":"Remote"},"version":"v5.2.0"} +{"packageName":"foreign","repo":{"contents":"https://github.com/purescript/purescript-foreign.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"foreign-generic","repo":{"contents":"https://github.com/paf31/purescript-foreign-generic.git","tag":"Remote"},"version":"v10.0.0"} +{"packageName":"foreign-object","repo":{"contents":"https://github.com/purescript/purescript-foreign-object.git","tag":"Remote"},"version":"v2.0.3"} +{"packageName":"fork","repo":{"contents":"https://github.com/slamdata/purescript-fork.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"form-urlencoded","repo":{"contents":"https://github.com/purescript-contrib/purescript-form-urlencoded.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"format","repo":{"contents":"https://github.com/sharkdp/purescript-format.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"format-nix","repo":{"contents":"https://github.com/justinwoo/format-nix.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"formatters","repo":{"contents":"https://github.com/slamdata/purescript-formatters.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"free","repo":{"contents":"https://github.com/purescript/purescript-free.git","tag":"Remote"},"version":"v5.2.0"} +{"packageName":"freeap","repo":{"contents":"https://github.com/ethul/purescript-freeap.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"freedom","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom.git","tag":"Remote"},"version":"v1.4.0"} +{"packageName":"freedom-now","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-now.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"freedom-portal","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-portal.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"freedom-router","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-router.git","tag":"Remote"},"version":"v1.0.1"} +{"packageName":"freedom-transition","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-transition.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"freedom-virtualized","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-virtualized.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"freedom-window-resize","repo":{"contents":"https://github.com/purescript-freedom/purescript-freedom-window-resize.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"freet","repo":{"contents":"https://github.com/purescript-contrib/purescript-freet.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"functions","repo":{"contents":"https://github.com/purescript/purescript-functions.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"functors","repo":{"contents":"https://github.com/purescript/purescript-functors.git","tag":"Remote"},"version":"v3.1.1"} +{"packageName":"fuzzy","repo":{"contents":"https://github.com/citizennet/purescript-fuzzy.git","tag":"Remote"},"version":"v0.2.1"} +{"packageName":"gen","repo":{"contents":"https://github.com/purescript/purescript-gen.git","tag":"Remote"},"version":"v2.1.1"} +{"packageName":"generics-rep","repo":{"contents":"https://github.com/purescript/purescript-generics-rep.git","tag":"Remote"},"version":"v6.1.1"} +{"packageName":"globals","repo":{"contents":"https://github.com/purescript/purescript-globals.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"gomtang-basic","repo":{"contents":"https://github.com/justinwoo/purescript-gomtang-basic.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"group","repo":{"contents":"https://github.com/morganthomas/purescript-group.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"halogen","repo":{"contents":"https://github.com/slamdata/purescript-halogen.git","tag":"Remote"},"version":"v5.0.0-rc.7"} +{"packageName":"halogen-bootstrap","repo":{"contents":"https://github.com/slamdata/purescript-halogen-bootstrap.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"halogen-bootstrap4","repo":{"contents":"https://github.com/mschristiansen/purescript-halogen-bootstrap4.git","tag":"Remote"},"version":"v0.1.4"} +{"packageName":"halogen-css","repo":{"contents":"https://github.com/slamdata/purescript-halogen-css.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"halogen-formless","repo":{"contents":"https://github.com/thomashoneyman/purescript-halogen-formless.git","tag":"Remote"},"version":"v1.0.0-rc.1"} +{"packageName":"halogen-select","repo":{"contents":"https://github.com/citizennet/purescript-halogen-select.git","tag":"Remote"},"version":"v5.0.0-rc.3"} +{"packageName":"halogen-vdom","repo":{"contents":"https://github.com/slamdata/purescript-halogen-vdom.git","tag":"Remote"},"version":"v6.1.0"} +{"packageName":"heterogeneous","repo":{"contents":"https://github.com/natefaubion/purescript-heterogeneous.git","tag":"Remote"},"version":"v0.4.1"} +{"packageName":"higher-order","repo":{"contents":"https://github.com/matthew-hilty/purescript-higher-order.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"http-methods","repo":{"contents":"https://github.com/purescript-contrib/purescript-http-methods.git","tag":"Remote"},"version":"v4.0.2"} +{"packageName":"httpure","repo":{"contents":"https://github.com/cprussin/purescript-httpure.git","tag":"Remote"},"version":"v0.9.0"} +{"packageName":"httpure-contrib-biscotti","repo":{"contents":"https://github.com/drewolson/purescript-httpure-contrib-biscotti.git","tag":"Remote"},"version":"v0.1.1"} +{"packageName":"hyper","repo":{"contents":"https://github.com/purescript-hyper/hyper.git","tag":"Remote"},"version":"v0.11.0"} +{"packageName":"hypertrout","repo":{"contents":"https://github.com/purescript-hyper/purescript-hypertrout.git","tag":"Remote"},"version":"v0.11.0"} +{"packageName":"identity","repo":{"contents":"https://github.com/purescript/purescript-identity.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"identy","repo":{"contents":"https://github.com/oreshinya/purescript-identy.git","tag":"Remote"},"version":"v2.1.0"} +{"packageName":"indexed-monad","repo":{"contents":"https://github.com/garyb/purescript-indexed-monad.git","tag":"Remote"},"version":"v1.1.0"} +{"packageName":"integers","repo":{"contents":"https://github.com/purescript/purescript-integers.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"invariant","repo":{"contents":"https://github.com/purescript/purescript-invariant.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"jajanmen","repo":{"contents":"https://github.com/justinwoo/purescript-jajanmen.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"jquery","repo":{"contents":"https://github.com/purescript-contrib/purescript-jquery.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"js-date","repo":{"contents":"https://github.com/purescript-contrib/purescript-js-date.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"js-timers","repo":{"contents":"https://github.com/purescript-contrib/purescript-js-timers.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"json-pointer","repo":{"contents":"https://github.com/reactormonk/purescript-json-pointer.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"json-schema","repo":{"contents":"https://github.com/felixmulder/purescript-json-schema.git","tag":"Remote"},"version":"v0.0.1"} +{"packageName":"jwt","repo":{"contents":"https://github.com/menelaos/purescript-jwt.git","tag":"Remote"},"version":"v0.0.7"} +{"packageName":"kancho","repo":{"contents":"https://github.com/justinwoo/purescript-kancho.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"kishimen","repo":{"contents":"https://github.com/justinwoo/purescript-kishimen.git","tag":"Remote"},"version":"v1.0.1"} +{"packageName":"lazy","repo":{"contents":"https://github.com/purescript/purescript-lazy.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"lcg","repo":{"contents":"https://github.com/purescript/purescript-lcg.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"leibniz","repo":{"contents":"https://github.com/paf31/purescript-leibniz.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"lenient-html-parser","repo":{"contents":"https://github.com/justinwoo/purescript-lenient-html-parser.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"lists","repo":{"contents":"https://github.com/purescript/purescript-lists.git","tag":"Remote"},"version":"v5.4.1"} +{"packageName":"machines","repo":{"contents":"https://github.com/purescript-contrib/purescript-machines.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"makkori","repo":{"contents":"https://github.com/justinwoo/purescript-makkori.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"math","repo":{"contents":"https://github.com/purescript/purescript-math.git","tag":"Remote"},"version":"v2.1.1"} +{"packageName":"matrices","repo":{"contents":"https://github.com/kritzcreek/purescript-matrices.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"maybe","repo":{"contents":"https://github.com/purescript/purescript-maybe.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"media-types","repo":{"contents":"https://github.com/purescript-contrib/purescript-media-types.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"memoize","repo":{"contents":"https://github.com/paf31/purescript-memoize.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"metadata","repo":{"contents":"https://github.com/spacchetti/purescript-metadata.git","tag":"Remote"},"version":"v0.13.4"} +{"packageName":"milkis","repo":{"contents":"https://github.com/justinwoo/purescript-milkis.git","tag":"Remote"},"version":"v7.2.1"} +{"packageName":"minibench","repo":{"contents":"https://github.com/purescript/purescript-minibench.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"mmorph","repo":{"contents":"https://github.com/Thimoteus/purescript-mmorph.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"monad-logger","repo":{"contents":"https://github.com/cprussin/purescript-monad-logger.git","tag":"Remote"},"version":"v1.3.1"} +{"packageName":"monad-loops","repo":{"contents":"https://github.com/mlang/purescript-monad-loops.git","tag":"Remote"},"version":"v0.5.0"} +{"packageName":"money","repo":{"contents":"https://github.com/i-am-tom/purescript-money.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"motsunabe","repo":{"contents":"https://github.com/justinwoo/purescript-motsunabe.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"mysql","repo":{"contents":"https://github.com/oreshinya/purescript-mysql.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"naporitan","repo":{"contents":"https://github.com/justinwoo/purescript-naporitan.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"naturals","repo":{"contents":"https://github.com/LiamGoodacre/purescript-naturals.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"newtype","repo":{"contents":"https://github.com/purescript/purescript-newtype.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"node-buffer","repo":{"contents":"https://github.com/purescript-node/purescript-node-buffer.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"node-child-process","repo":{"contents":"https://github.com/purescript-node/purescript-node-child-process.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"node-electron","repo":{"contents":"https://github.com/cprussin/purescript-node-electron.git","tag":"Remote"},"version":"v0.0.2"} +{"packageName":"node-fs","repo":{"contents":"https://github.com/purescript-node/purescript-node-fs.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"node-fs-aff","repo":{"contents":"https://github.com/purescript-node/purescript-node-fs-aff.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"node-he","repo":{"contents":"https://github.com/justinwoo/purescript-node-he.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"node-http","repo":{"contents":"https://github.com/purescript-node/purescript-node-http.git","tag":"Remote"},"version":"v5.0.2"} +{"packageName":"node-net","repo":{"contents":"https://github.com/purescript-node/purescript-node-net.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"node-path","repo":{"contents":"https://github.com/purescript-node/purescript-node-path.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"node-postgres","repo":{"contents":"https://github.com/epost/purescript-node-postgres.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"node-process","repo":{"contents":"https://github.com/purescript-node/purescript-node-process.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"node-readline","repo":{"contents":"https://github.com/purescript-node/purescript-node-readline.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"node-sqlite3","repo":{"contents":"https://github.com/justinwoo/purescript-node-sqlite3.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"node-streams","repo":{"contents":"https://github.com/purescript-node/purescript-node-streams.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"node-telegram-bot-api","repo":{"contents":"https://github.com/justinwoo/purescript-node-telegram-bot-api.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"node-url","repo":{"contents":"https://github.com/purescript-node/purescript-node-url.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"nodemailer","repo":{"contents":"https://github.com/oreshinya/purescript-nodemailer.git","tag":"Remote"},"version":"v2.0.2"} +{"packageName":"nonempty","repo":{"contents":"https://github.com/purescript/purescript-nonempty.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"now","repo":{"contents":"https://github.com/purescript-contrib/purescript-now.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"nullable","repo":{"contents":"https://github.com/purescript-contrib/purescript-nullable.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"numbers","repo":{"contents":"https://github.com/sharkdp/purescript-numbers.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"options","repo":{"contents":"https://github.com/purescript-contrib/purescript-options.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"optparse","repo":{"contents":"https://github.com/f-o-a-m/purescript-optparse.git","tag":"Remote"},"version":"v3.0.1"} +{"packageName":"ordered-collections","repo":{"contents":"https://github.com/purescript/purescript-ordered-collections.git","tag":"Remote"},"version":"v1.6.1"} +{"packageName":"orders","repo":{"contents":"https://github.com/purescript/purescript-orders.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"pairing","repo":{"contents":"https://github.com/paf31/purescript-pairing.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"pairs","repo":{"contents":"https://github.com/sharkdp/purescript-pairs.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"parallel","repo":{"contents":"https://github.com/purescript/purescript-parallel.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"parsing","repo":{"contents":"https://github.com/purescript-contrib/purescript-parsing.git","tag":"Remote"},"version":"v5.0.3"} +{"packageName":"partial","repo":{"contents":"https://github.com/purescript/purescript-partial.git","tag":"Remote"},"version":"v2.0.1"} +{"packageName":"pathy","repo":{"contents":"https://github.com/slamdata/purescript-pathy.git","tag":"Remote"},"version":"v7.0.1"} +{"packageName":"phoenix","repo":{"contents":"https://github.com/brandonhamilton/purescript-phoenix.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"pipes","repo":{"contents":"https://github.com/felixSchl/purescript-pipes.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"pointed-list","repo":{"contents":"https://github.com/paluh/purescript-pointed-list.git","tag":"Remote"},"version":"v0.4.0"} +{"packageName":"polyform","repo":{"contents":"https://github.com/paluh/purescript-polyform.git","tag":"Remote"},"version":"v0.8.0"} +{"packageName":"posix-types","repo":{"contents":"https://github.com/purescript-node/purescript-posix-types.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"precise-datetime","repo":{"contents":"https://github.com/awakesecurity/purescript-precise-datetime.git","tag":"Remote"},"version":"v5.1.1"} +{"packageName":"prelude","repo":{"contents":"https://github.com/purescript/purescript-prelude.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"prettier","repo":{"contents":"https://github.com/gcanti/purescript-prettier.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"profunctor","repo":{"contents":"https://github.com/purescript/purescript-profunctor.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"profunctor-lenses","repo":{"contents":"https://github.com/purescript-contrib/purescript-profunctor-lenses.git","tag":"Remote"},"version":"v6.2.0"} +{"packageName":"promises","repo":{"contents":"https://github.com/thimoteus/purescript-promises.git","tag":"Remote"},"version":"v3.1.1"} +{"packageName":"proxy","repo":{"contents":"https://github.com/purescript/purescript-proxy.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"proxying","repo":{"contents":"https://github.com/matthew-hilty/purescript-proxying.git","tag":"Remote"},"version":"v1.1.0"} +{"packageName":"psa-utils","repo":{"contents":"https://github.com/natefaubion/purescript-psa-utils.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"psc-ide","repo":{"contents":"https://github.com/kRITZCREEK/purescript-psc-ide.git","tag":"Remote"},"version":"v15.0.1"} +{"packageName":"psci-support","repo":{"contents":"https://github.com/purescript/purescript-psci-support.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"querydsl","repo":{"contents":"https://github.com/Dretch/purescript-querydsl.git","tag":"Remote"},"version":"v0.10.1"} +{"packageName":"quickcheck","repo":{"contents":"https://github.com/purescript/purescript-quickcheck.git","tag":"Remote"},"version":"v6.1.0"} +{"packageName":"quickcheck-laws","repo":{"contents":"https://github.com/garyb/purescript-quickcheck-laws.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"quotient","repo":{"contents":"https://github.com/rightfold/purescript-quotient.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"radox","repo":{"contents":"https://github.com/danieljharvey/purescript-radox.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"random","repo":{"contents":"https://github.com/purescript/purescript-random.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"rationals","repo":{"contents":"https://github.com/anttih/purescript-rationals.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"rave","repo":{"contents":"https://github.com/reactormonk/purescript-rave.git","tag":"Remote"},"version":"v0.1.1"} +{"packageName":"react","repo":{"contents":"https://github.com/purescript-contrib/purescript-react.git","tag":"Remote"},"version":"v8.0.0"} +{"packageName":"react-basic","repo":{"contents":"https://github.com/lumihq/purescript-react-basic.git","tag":"Remote"},"version":"v11.0.0"} +{"packageName":"react-basic-hooks","repo":{"contents":"https://github.com/spicydonuts/purescript-react-basic-hooks.git","tag":"Remote"},"version":"v2.0.3"} +{"packageName":"react-basic-native","repo":{"contents":"https://github.com/dwhitney/purescript-react-basic-native.git","tag":"Remote"},"version":"v0.1.3"} +{"packageName":"react-dom","repo":{"contents":"https://github.com/purescript-contrib/purescript-react-dom.git","tag":"Remote"},"version":"v6.1.0"} +{"packageName":"react-radox","repo":{"contents":"https://github.com/danieljharvey/purescript-react-radox.git","tag":"Remote"},"version":"v0.0.5"} +{"packageName":"react-stylesheet","repo":{"contents":"https://github.com/danieljharvey/purescript-react-stylesheet.git","tag":"Remote"},"version":"v0.0.2"} +{"packageName":"read","repo":{"contents":"https://github.com/truqu/purescript-read.git","tag":"Remote"},"version":"v1.0.1"} +{"packageName":"record","repo":{"contents":"https://github.com/purescript/purescript-record.git","tag":"Remote"},"version":"v2.0.1"} +{"packageName":"record-extra","repo":{"contents":"https://github.com/justinwoo/purescript-record-extra.git","tag":"Remote"},"version":"v3.0.1"} +{"packageName":"record-format","repo":{"contents":"https://github.com/kcsongor/purescript-record-format.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"redux-devtools","repo":{"contents":"https://github.com/justinwoo/purescript-redux-devtools.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"refined","repo":{"contents":"https://github.com/danieljharvey/purescript-refined.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"refs","repo":{"contents":"https://github.com/purescript/purescript-refs.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"remotedata","repo":{"contents":"https://github.com/krisajenkins/purescript-remotedata.git","tag":"Remote"},"version":"v4.2.0"} +{"packageName":"result","repo":{"contents":"https://github.com/ad-si/purescript-result.git","tag":"Remote"},"version":"v1.0.3"} +{"packageName":"ring-modules","repo":{"contents":"https://github.com/f-o-a-m/purescript-ring-modules.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"routing","repo":{"contents":"https://github.com/slamdata/purescript-routing.git","tag":"Remote"},"version":"v9.0.0"} +{"packageName":"routing-duplex","repo":{"contents":"https://github.com/natefaubion/purescript-routing-duplex.git","tag":"Remote"},"version":"v0.4.0"} +{"packageName":"run","repo":{"contents":"https://github.com/natefaubion/purescript-run.git","tag":"Remote"},"version":"v3.0.1"} +{"packageName":"run-profunctor-lenses","repo":{"contents":"https://github.com/sigilion/purescript-run-profunctor-lenses.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"run-streaming","repo":{"contents":"https://github.com/natefaubion/purescript-run-streaming.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"safely","repo":{"contents":"https://github.com/paf31/purescript-safely.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"search-trie","repo":{"contents":"https://github.com/klntsky/purescript-search-trie.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"selection-foldable","repo":{"contents":"https://github.com/jamieyung/purescript-selection-foldable.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"semirings","repo":{"contents":"https://github.com/purescript/purescript-semirings.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"server-sent-events","repo":{"contents":"https://github.com/MichaelXavier/purescript-server-sent-events.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"shoronpo","repo":{"contents":"https://github.com/justinwoo/purescript-shoronpo.git","tag":"Remote"},"version":"v0.3.0"} +{"packageName":"signal","repo":{"contents":"https://github.com/bodil/purescript-signal.git","tag":"Remote"},"version":"v10.1.0"} +{"packageName":"sijidou","repo":{"contents":"https://github.com/justinwoo/purescript-sijidou.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"simple-emitter","repo":{"contents":"https://github.com/oreshinya/purescript-simple-emitter.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"simple-i18n","repo":{"contents":"https://github.com/oreshinya/purescript-simple-i18n.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"simple-json","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"simple-json-generics","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json-generics.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"simple-json-utils","repo":{"contents":"https://github.com/justinwoo/purescript-simple-json-utils.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"simple-jwt","repo":{"contents":"https://github.com/oreshinya/purescript-simple-jwt.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"simple-timestamp","repo":{"contents":"https://github.com/reactormonk/purescript-simple-timestamp.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"sized-vectors","repo":{"contents":"https://github.com/bodil/purescript-sized-vectors.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"slug","repo":{"contents":"https://github.com/thomashoneyman/purescript-slug.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"smolder","repo":{"contents":"https://github.com/bodil/purescript-smolder.git","tag":"Remote"},"version":"v12.3.0"} +{"packageName":"snabbdom","repo":{"contents":"https://github.com/LukaJCB/purescript-snabbdom.git","tag":"Remote"},"version":"v1.0.1"} +{"packageName":"sodium","repo":{"contents":"https://github.com/SodiumFRP/purescript-sodium.git","tag":"Remote"},"version":"v2.1.0"} +{"packageName":"spec","repo":{"contents":"https://github.com/purescript-spec/purescript-spec.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"spec-discovery","repo":{"contents":"https://github.com/owickstrom/purescript-spec-discovery.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"spec-quickcheck","repo":{"contents":"https://github.com/owickstrom/purescript-spec-quickcheck.git","tag":"Remote"},"version":"v3.1.0"} +{"packageName":"spork","repo":{"contents":"https://github.com/natefaubion/purescript-spork.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"st","repo":{"contents":"https://github.com/purescript/purescript-st.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"string-parsers","repo":{"contents":"https://github.com/paf31/purescript-string-parsers.git","tag":"Remote"},"version":"v5.0.1"} +{"packageName":"strings","repo":{"contents":"https://github.com/purescript/purescript-strings.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"strings-extra","repo":{"contents":"https://github.com/purescript-contrib/purescript-strings-extra.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"stringutils","repo":{"contents":"https://github.com/menelaos/purescript-stringutils.git","tag":"Remote"},"version":"v0.0.10"} +{"packageName":"strongcheck","repo":{"contents":"https://github.com/purescript-contrib/purescript-strongcheck.git","tag":"Remote"},"version":"v4.1.1"} +{"packageName":"struct","repo":{"contents":"https://github.com/matthew-hilty/purescript-struct.git","tag":"Remote"},"version":"v1.1.0"} +{"packageName":"stylesheet","repo":{"contents":"https://github.com/danieljharvey/purescript-stylesheet.git","tag":"Remote"},"version":"v0.0.3"} +{"packageName":"subcategory","repo":{"contents":"https://github.com/matthew-hilty/purescript-subcategory.git","tag":"Remote"},"version":"v0.2.0"} +{"packageName":"suggest","repo":{"contents":"https://github.com/nwolverson/purescript-suggest.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"sunde","repo":{"contents":"https://github.com/justinwoo/purescript-sunde.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"svg-parser","repo":{"contents":"https://github.com/rnons/purescript-svg-parser.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"svg-parser-halogen","repo":{"contents":"https://github.com/rnons/purescript-svg-parser-halogen.git","tag":"Remote"},"version":"v1.0.0"} +{"packageName":"tailrec","repo":{"contents":"https://github.com/purescript/purescript-tailrec.git","tag":"Remote"},"version":"v4.1.0"} +{"packageName":"test-unit","repo":{"contents":"https://github.com/bodil/purescript-test-unit.git","tag":"Remote"},"version":"v15.0.0"} +{"packageName":"these","repo":{"contents":"https://github.com/purescript-contrib/purescript-these.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"tolerant-argonaut","repo":{"contents":"https://github.com/matthew-hilty/purescript-tolerant-argonaut.git","tag":"Remote"},"version":"v1.1.0"} +{"packageName":"toppokki","repo":{"contents":"https://github.com/justinwoo/purescript-toppokki.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"tortellini","repo":{"contents":"https://github.com/justinwoo/purescript-tortellini.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"transformers","repo":{"contents":"https://github.com/purescript/purescript-transformers.git","tag":"Remote"},"version":"v4.2.0"} +{"packageName":"trout","repo":{"contents":"https://github.com/purescript-hyper/purescript-trout.git","tag":"Remote"},"version":"v0.12.1"} +{"packageName":"tuples","repo":{"contents":"https://github.com/purescript/purescript-tuples.git","tag":"Remote"},"version":"v5.1.0"} +{"packageName":"type-equality","repo":{"contents":"https://github.com/purescript/purescript-type-equality.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"type-isequal","repo":{"contents":"https://github.com/justinwoo/purescript-type-isequal.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"typedenv","repo":{"contents":"https://github.com/nsaunders/purescript-typedenv.git","tag":"Remote"},"version":"v0.0.1"} +{"packageName":"typelevel","repo":{"contents":"https://github.com/bodil/purescript-typelevel.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"typelevel-prelude","repo":{"contents":"https://github.com/purescript/purescript-typelevel-prelude.git","tag":"Remote"},"version":"v5.0.0"} +{"packageName":"uint","repo":{"contents":"https://github.com/zaquest/purescript-uint.git","tag":"Remote"},"version":"v5.1.1"} +{"packageName":"undefinable","repo":{"contents":"https://github.com/ethul/purescript-undefinable.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"undefined","repo":{"contents":"https://github.com/bklaric/purescript-undefined.git","tag":"Remote"},"version":"v1.0.2"} +{"packageName":"unfoldable","repo":{"contents":"https://github.com/purescript/purescript-unfoldable.git","tag":"Remote"},"version":"v4.0.2"} +{"packageName":"unicode","repo":{"contents":"https://github.com/purescript-contrib/purescript-unicode.git","tag":"Remote"},"version":"v4.0.1"} +{"packageName":"unordered-collections","repo":{"contents":"https://github.com/fehrenbach/purescript-unordered-collections.git","tag":"Remote"},"version":"v1.8.2"} +{"packageName":"unsafe-coerce","repo":{"contents":"https://github.com/purescript/purescript-unsafe-coerce.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"unsafe-reference","repo":{"contents":"https://github.com/purescript-contrib/purescript-unsafe-reference.git","tag":"Remote"},"version":"v3.0.1"} +{"packageName":"uri","repo":{"contents":"https://github.com/slamdata/purescript-uri.git","tag":"Remote"},"version":"v7.0.0"} +{"packageName":"uuid","repo":{"contents":"https://github.com/spicydonuts/purescript-uuid.git","tag":"Remote"},"version":"v6.0.0"} +{"packageName":"validation","repo":{"contents":"https://github.com/purescript/purescript-validation.git","tag":"Remote"},"version":"v4.2.0"} +{"packageName":"variant","repo":{"contents":"https://github.com/natefaubion/purescript-variant.git","tag":"Remote"},"version":"v6.0.1"} +{"packageName":"web-clipboard","repo":{"contents":"https://github.com/purescript-web/purescript-web-clipboard.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"web-dom","repo":{"contents":"https://github.com/purescript-web/purescript-web-dom.git","tag":"Remote"},"version":"v4.0.0"} +{"packageName":"web-events","repo":{"contents":"https://github.com/purescript-web/purescript-web-events.git","tag":"Remote"},"version":"v2.0.1"} +{"packageName":"web-file","repo":{"contents":"https://github.com/purescript-web/purescript-web-file.git","tag":"Remote"},"version":"v2.2.0"} +{"packageName":"web-html","repo":{"contents":"https://github.com/purescript-web/purescript-web-html.git","tag":"Remote"},"version":"v2.3.0"} +{"packageName":"web-socket","repo":{"contents":"https://github.com/purescript-web/purescript-web-socket.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"web-storage","repo":{"contents":"https://github.com/purescript-web/purescript-web-storage.git","tag":"Remote"},"version":"v3.0.0"} +{"packageName":"web-touchevents","repo":{"contents":"https://github.com/purescript-web/purescript-web-touchevents.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"web-uievents","repo":{"contents":"https://github.com/purescript-web/purescript-web-uievents.git","tag":"Remote"},"version":"v2.0.0"} +{"packageName":"web-xhr","repo":{"contents":"https://github.com/purescript-web/purescript-web-xhr.git","tag":"Remote"},"version":"v3.0.2"} +{"packageName":"xiaomian","repo":{"contents":"https://github.com/justinwoo/purescript-xiaomian.git","tag":"Remote"},"version":"v0.1.0"} +{"packageName":"yargs","repo":{"contents":"https://github.com/paf31/purescript-yargs.git","tag":"Remote"},"version":"v4.0.0"} diff --git a/test/fixtures/new-spago-config.yaml b/test/fixtures/new-spago-config.yaml new file mode 100644 index 000000000..25d7004bb --- /dev/null +++ b/test/fixtures/new-spago-config.yaml @@ -0,0 +1,23 @@ +package: + dependencies: + - console + - effect + - prelude + name: foo + publish: + license: MIT + version: 0.0.1 +workspace: + backend: + cmd: echo + extra_packages: + error: + dependencies: + - console + - effect + - prelude + git: https://github.com/bklaric/purescript-error.git + ref: bar + package_set: + url: https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.4-20220921/packages.json + hash: sha256-n2KHOrutJFkN7JA+78Rc07bZvX7TTHOQ6yyELlH9sTM= diff --git a/test/fixtures/sources-output-15.txt b/test/fixtures/sources-output-15.txt index b6557ae12..8052fade6 100644 --- a/test/fixtures/sources-output-15.txt +++ b/test/fixtures/sources-output-15.txt @@ -1,5 +1,5 @@ .spago/console/v6.0.0/src/**/*.purs .spago/effect/v4.0.0/src/**/*.purs -.spago/prelude/v6.0.0/src/**/*.purs +.spago/prelude/v6.0.1/src/**/*.purs src/**/*.purs test/**/*.purs