Began work on a PureScript Aviary implementation
This commit is contained in:
commit
03b0c2ef12
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/bower_components/
|
||||||
|
/node_modules/
|
||||||
|
/.pulp-cache/
|
||||||
|
/output/
|
||||||
|
/generated-docs/
|
||||||
|
/.psc-package/
|
||||||
|
/.psc*
|
||||||
|
/.purs*
|
||||||
|
/.psa*
|
||||||
|
/.spago
|
126
packages.dhall
Normal file
126
packages.dhall
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
{-
|
||||||
|
Welcome to your new Dhall package-set!
|
||||||
|
|
||||||
|
Below are instructions for how to edit this file for most use
|
||||||
|
cases, so that you don't need to know Dhall to use it.
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
Most will want to do one or both of these options:
|
||||||
|
1. Override/Patch a package's dependency
|
||||||
|
2. Add a package not already in the default package set
|
||||||
|
|
||||||
|
This file will continue to work whether you use one or both options.
|
||||||
|
Instructions for each option are explained below.
|
||||||
|
|
||||||
|
### Overriding/Patching a package
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Change a package's dependency to a newer/older release than the
|
||||||
|
default package set's release
|
||||||
|
- Use your own modified version of some dependency that may
|
||||||
|
include new API, changed API, removed API by
|
||||||
|
using your custom git repo of the library rather than
|
||||||
|
the package set's repo
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
where `entityName` is one of the following:
|
||||||
|
- dependencies
|
||||||
|
- repo
|
||||||
|
- version
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with packageName.entityName = "new value"
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Example:
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with halogen.version = "master"
|
||||||
|
with halogen.repo = "https://example.com/path/to/git/repo.git"
|
||||||
|
|
||||||
|
with halogen-vdom.version = "v4.0.0"
|
||||||
|
with halogen-vdom.dependencies = [ "extra-dependency" ] # halogen-vdom.dependencies
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Add packages that aren't already included in the default package set
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
where `<version>` is:
|
||||||
|
- a tag (i.e. "v4.0.0")
|
||||||
|
- a branch (i.e. "master")
|
||||||
|
- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977")
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with new-package-name =
|
||||||
|
{ dependencies =
|
||||||
|
[ "dependency1"
|
||||||
|
, "dependency2"
|
||||||
|
]
|
||||||
|
, repo =
|
||||||
|
"https://example.com/path/to/git/repo.git"
|
||||||
|
, version =
|
||||||
|
"<version>"
|
||||||
|
}
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Example:
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with benchotron =
|
||||||
|
{ dependencies =
|
||||||
|
[ "arrays"
|
||||||
|
, "exists"
|
||||||
|
, "profunctor"
|
||||||
|
, "strings"
|
||||||
|
, "quickcheck"
|
||||||
|
, "lcg"
|
||||||
|
, "transformers"
|
||||||
|
, "foldable-traversable"
|
||||||
|
, "exceptions"
|
||||||
|
, "node-fs"
|
||||||
|
, "node-buffer"
|
||||||
|
, "node-readline"
|
||||||
|
, "datetime"
|
||||||
|
, "now"
|
||||||
|
]
|
||||||
|
, repo =
|
||||||
|
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||||
|
, version =
|
||||||
|
"v7.0.0"
|
||||||
|
}
|
||||||
|
-------------------------------
|
||||||
|
-}
|
||||||
|
|
||||||
|
https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220901/packages.dhall sha256:f1531b29c21ac437ffe5666c1b6cc76f0a9c29d3c9d107ff047aa2567744994f
|
||||||
|
with base64 =
|
||||||
|
{ dependencies =
|
||||||
|
[ "arraybuffer-types"
|
||||||
|
, "arrays"
|
||||||
|
, "assert"
|
||||||
|
, "console"
|
||||||
|
, "effect"
|
||||||
|
, "either"
|
||||||
|
, "encoding"
|
||||||
|
, "enums"
|
||||||
|
, "exceptions"
|
||||||
|
, "functions"
|
||||||
|
, "partial"
|
||||||
|
, "prelude"
|
||||||
|
, "quickcheck"
|
||||||
|
, "strings"
|
||||||
|
, "stringutils"
|
||||||
|
, "unicode"
|
||||||
|
]
|
||||||
|
, repo =
|
||||||
|
"https://github.com/menelaos/purescript-b64"
|
||||||
|
, version =
|
||||||
|
"v0.0.8" -- branch, tag, or commit hash
|
||||||
|
}
|
26
spago.dhall
Normal file
26
spago.dhall
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{-
|
||||||
|
Welcome to a Spago project!
|
||||||
|
You can edit this file as you like.
|
||||||
|
|
||||||
|
Need help? See the following resources:
|
||||||
|
- Spago documentation: https://github.com/purescript/spago
|
||||||
|
- Dhall language tour: https://docs.dhall-lang.org/tutorials/Language-Tour.html
|
||||||
|
|
||||||
|
When creating a new Spago project, you can use
|
||||||
|
`spago init --no-comments` or `spago init -C`
|
||||||
|
to generate this file without the comments in this block.
|
||||||
|
-}
|
||||||
|
{ name = "my-project"
|
||||||
|
, dependencies =
|
||||||
|
[ "aff"
|
||||||
|
, "arraybuffer-types"
|
||||||
|
, "b64"
|
||||||
|
, "console"
|
||||||
|
, "effect"
|
||||||
|
, "either"
|
||||||
|
, "fetch"
|
||||||
|
, "prelude"
|
||||||
|
]
|
||||||
|
, packages = ./packages.dhall
|
||||||
|
, sources = [ "src/**/*.purs", "test/**/*.purs" ]
|
||||||
|
}
|
41
src/Main.purs
Normal file
41
src/Main.purs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
|
||||||
|
import Effect (Effect)
|
||||||
|
import Effect.Aff (Aff, launchAff)
|
||||||
|
import Effect.Class (liftEffect)
|
||||||
|
import Effect.Console (log)
|
||||||
|
import Fetch (fetch)
|
||||||
|
import Data.Binary.Base64 (decode)
|
||||||
|
import Data.Either (Either, hush, note)
|
||||||
|
import Data.ArrayBuffer.Types (Uint8Array)
|
||||||
|
|
||||||
|
data AviaryError
|
||||||
|
= MalformedKey
|
||||||
|
|
||||||
|
instance showAviaryError :: Show AviaryError where
|
||||||
|
show MalformedKey = "Malformed key!!"
|
||||||
|
|
||||||
|
type UrlInfo =
|
||||||
|
{ server :: String
|
||||||
|
, fileId :: String
|
||||||
|
, key :: String
|
||||||
|
}
|
||||||
|
|
||||||
|
parseUrl :: String -> Either AviaryError UrlInfo
|
||||||
|
parseUrl url =
|
||||||
|
let { after, before } = splitAt (indexOf' (Pattern "/") 8 url) url
|
||||||
|
in { server: before, fileId: after, key: after }
|
||||||
|
|
||||||
|
decodeKey :: String -> Either AviaryError Uint8Array
|
||||||
|
decodeKey key = note MalformedKey $ hush $ decode key
|
||||||
|
|
||||||
|
main_aff :: Aff Unit
|
||||||
|
main_aff = do
|
||||||
|
{ status, text } <- fetch "https://envs.sh/Q_V.txt" {}
|
||||||
|
responseText <- text
|
||||||
|
liftEffect $ log responseText
|
||||||
|
|
||||||
|
main :: Effect Unit
|
||||||
|
main = launchAff main_aff $> unit
|
11
test/Main.purs
Normal file
11
test/Main.purs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
module Test.Main where
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
|
||||||
|
import Effect (Effect)
|
||||||
|
import Effect.Class.Console (log)
|
||||||
|
|
||||||
|
main :: Effect Unit
|
||||||
|
main = do
|
||||||
|
log "🍝"
|
||||||
|
log "You should add some tests."
|
Loading…
Reference in a new issue