git.iko.soy/rowtype-yoga/purescript-uuid
on main help sign in
Merge pull request #33 from fsoikin/drop-foreign-generic
6509ec9Madeline Trotter
bower.json+1−47
@@ -16,56 +16,10 @@
16 "dependencies": {
16 "dependencies": {
17 "purescript-aff": "^v7.0.0",
17 "purescript-aff": "^v7.0.0",
18 "purescript-effect": "^v4.0.0",
18 "purescript-effect": "^v4.0.0",
19− "purescript-either": "^v6.0.0",
20− "purescript-foreign": "^v7.0.0",
21− "purescript-foreign-generic": "https://github.com/working-group-purescript-es/purescript-foreign-generic.git#v0.15.0-updates",
22− "purescript-lists": "^v7.0.0",
23 "purescript-maybe": "^v6.0.0",
19 "purescript-maybe": "^v6.0.0",
24 "purescript-partial": "^v4.0.0",
20 "purescript-partial": "^v4.0.0",
25 "purescript-prelude": "^v6.0.0",
21 "purescript-prelude": "^v6.0.0",
26 "purescript-spec": "^v7.0.0",
22 "purescript-spec": "^v7.0.0",
27− "purescript-strings": "^v6.0.0",
23+ "purescript-strings": "^v6.0.0"
28− "purescript-transformers": "^v6.0.0"
29− },
30− "resolutions": {
31− "purescript-maybe": "^v6.0.0",
32− "purescript-effect": "^v4.0.0",
33− "purescript-lists": "^v7.0.0",
34− "purescript-prelude": "^v6.0.0",
35− "purescript-partial": "^v4.0.0",
36− "purescript-foreign": "^v7.0.0",
37− "purescript-either": "^v6.0.0",
38− "purescript-strings": "^v6.0.0",
39− "purescript-newtype": "^5.0.0",
40− "purescript-transformers": "^6.0.0",
41− "purescript-control": "^6.0.0",
42− "purescript-invariant": "^6.0.0",
43− "purescript-foldable-traversable": "^6.0.0",
44− "purescript-bifunctors": "^6.0.0",
45− "purescript-arrays": "^7.0.0",
46− "purescript-functions": "^6.0.0",
47− "purescript-lazy": "^6.0.0",
48− "purescript-tailrec": "^6.0.0",
49− "purescript-exceptions": "^6.0.0",
50− "purescript-nonempty": "^7.0.0",
51− "purescript-refs": "^6.0.0",
52− "purescript-identity": "^6.0.0",
53− "purescript-unfoldable": "^6.0.0",
54− "purescript-tuples": "^7.0.0",
55− "purescript-unsafe-coerce": "^6.0.0",
56− "purescript-integers": "^6.0.0",
57− "purescript-ordered-collections": "^3.0.0",
58− "purescript-enums": "^6.0.0",
59− "purescript-safe-coerce": "^2.0.0",
60− "purescript-distributive": "^6.0.0",
61− "purescript-gen": "^4.0.0",
62− "purescript-functors": "^5.0.0",
63− "purescript-const": "^6.0.0",
64− "purescript-st": "^6.0.0",
65− "purescript-numbers": "^9.0.0",
66− "purescript-orders": "^6.0.0",
67− "purescript-profunctor": "^6.0.0",
68− "purescript-contravariant": "^6.0.0",
69− "purescript-exists": "^6.0.0"
70 }
24 }
71}
25}
packages.dhall+2−7
@@ -1,10 +1,5 @@
1let upstream =
1let upstream =
2− https://github.com/purescript/package-sets/releases/download/psc-0.15.0-20220505/packages.dhall
2+ https://github.com/purescript/package-sets/releases/download/psc-0.15.2-20220624/packages.dhall
3− sha256:ba57c25c86fd54c2b672cda3a6836bbbdff4b1bbf946bceaabb64e5a10285638
3+ sha256:08989ed9f53e381f879f1b7012ad7684b1ed64d7164c4ad75e306d3210a46c92
4
4
5in upstream
5in upstream
6− with foreign-generic =
7− { repo = "https://github.com/working-group-purescript-es/purescript-foreign-generic.git"
8− , dependencies = [ "foreign", "foreign-object", "ordered-collections", "exceptions", "record", "identity" ]
9− , version = "v0.15.0-updates"
10− }
spago.dhall−5
@@ -12,15 +12,10 @@ You can edit this file as you like.
12 [ "prelude"
12 [ "prelude"
13 , "aff"
13 , "aff"
14 , "effect"
14 , "effect"
15− , "either"
16− , "foreign-generic"
17− , "foreign"
18− , "lists"
19 , "maybe"
15 , "maybe"
20 , "partial"
16 , "partial"
21 , "spec"
17 , "spec"
22 , "strings"
18 , "strings"
23− , "transformers"
24 ]
19 ]
25, packages =
20, packages =
26 ./packages.dhall
21 ./packages.dhall
src/Data/UUID.purs−15
@@ -9,14 +9,8 @@ module Data.UUID
9 ) where
9 ) where
10
10
11import Prelude
11import Prelude
12−import Control.Monad.Except.Trans (except)
13−import Data.Either (note)
14−import Data.List.NonEmpty (singleton)
15import Data.Maybe (Maybe(Nothing, Just))
12import Data.Maybe (Maybe(Nothing, Just))
16import Effect (Effect)
13import Effect (Effect)
17−import Foreign (ForeignError(..))
18−import Foreign as Foreign
19−import Foreign.Class (class Encode, class Decode)
20
14
21newtype UUID
15newtype UUID
22 = UUID String
16 = UUID String
@@ -57,12 +51,3 @@ derive instance ordUUID :: Ord UUID
57
51
58toString :: UUID -> String
52toString :: UUID -> String
59toString (UUID uuid) = uuid
53toString (UUID uuid) = uuid
60−
61−instance decodeUUID :: Decode UUID where
62− decode x = Foreign.readString x >>=
63− parseUUID
64− >>> note (singleton $ ForeignError "Failed to parse foreign UUID")
65− >>> except
66−
67−instance encodeUUID :: Encode UUID where
68− encode = toString >>> Foreign.unsafeToForeign
test/Main.purs−7
@@ -1,7 +1,6 @@
1module Test.Main where
1module Test.Main where
2
2
3import Prelude
3import Prelude
4−import Data.Either (Either(..))
5import Data.Maybe (Maybe(..), fromJust)
4import Data.Maybe (Maybe(..), fromJust)
6import Data.String (length)
5import Data.String (length)
7import Data.UUID (genUUID, genv3UUID, genv5UUID, parseUUID, toString)
6import Data.UUID (genUUID, genv3UUID, genv5UUID, parseUUID, toString)
@@ -9,8 +8,6 @@ import Effect (Effect)
9import Effect.Aff (launchAff_)
8import Effect.Aff (launchAff_)
10import Effect.Class (liftEffect)
9import Effect.Class (liftEffect)
11import Effect.Unsafe (unsafePerformEffect)
10import Effect.Unsafe (unsafePerformEffect)
12−import Control.Monad.Except (runExcept)
13−import Foreign.Generic (encode, decode)
14import Partial.Unsafe (unsafePartial)
11import Partial.Unsafe (unsafePartial)
15import Test.Spec (it, describe)
12import Test.Spec (it, describe)
16import Test.Spec.Assertions (shouldEqual)
13import Test.Spec.Assertions (shouldEqual)
@@ -56,7 +53,3 @@ main =
56
53
57 uuid = parseUUID uuidStr
54 uuid = parseUUID uuidStr
58 showUUID `shouldEqual` (show $ unsafePartial $ fromJust uuid)
55 showUUID `shouldEqual` (show $ unsafePartial $ fromJust uuid)
59− it "`encode >>> decode` returns the uuid unchanged" do
60− let
61− uuid = unsafePerformEffect genUUID
62− runExcept ((encode >>> decode) uuid) `shouldEqual` Right uuid