diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 063845e..06ed895 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,10 +13,12 @@ jobs: - uses: actions/checkout@v2 - uses: purescript-contrib/setup-purescript@main + with: + purescript: "unstable" - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v2 with: - node-version: "10" + node-version: "14" - name: Install dependencies run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fbb0b8..d232b3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Notable changes to this project are documented in this file. The format is based ## [Unreleased] Breaking changes: +- Migrate FFI to ES modules (#14 by @JordanMartinez) New features: diff --git a/bower.json b/bower.json index a0dba67..879edab 100644 --- a/bower.json +++ b/bower.json @@ -19,14 +19,14 @@ "package-lock.json" ], "dependencies": { - "purescript-effect": "^3.0.0", - "purescript-partial": "^3.0.0", - "purescript-prelude": "^5.0.0", - "purescript-web-dom": "^5.0.0" + "purescript-effect": "master", + "purescript-partial": "master", + "purescript-prelude": "master", + "purescript-web-dom": "master" }, "devDependencies": { - "purescript-assert": "^5.0.0", - "purescript-console": "^5.0.0", - "purescript-psci-support": "^5.0.0" + "purescript-assert": "master", + "purescript-console": "master", + "purescript-psci-support": "master" } } diff --git a/package.json b/package.json index 80a837e..00b713f 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ }, "devDependencies": { "parcel-bundler": "^1.12.3", - "pulp": "^15.0.0", - "purescript-psa": "^0.8.0", + "pulp": "16.0.0-0", + "purescript-psa": "^0.8.2", "rimraf": "^2.6.3" }, "dependencies": { diff --git a/src/Web/DOM/DOMParser.js b/src/Web/DOM/DOMParser.js index f47f3fa..a911061 100644 --- a/src/Web/DOM/DOMParser.js +++ b/src/Web/DOM/DOMParser.js @@ -1,11 +1,9 @@ /* Web.DOM.DOMParser */ -"use strict"; - -exports.makeDOMParser = function () { +export function makeDOMParser() { return new DOMParser(); -}; +} -exports.parseFromString = function (documentType) { +export function parseFromString(documentType) { return function (sourceString) { return function (domParser) { return function () { // Effect thunk @@ -13,4 +11,4 @@ exports.parseFromString = function (documentType) { }; }; }; -}; +} diff --git a/src/Web/DOM/XMLSerializer.js b/src/Web/DOM/XMLSerializer.js index 59d5fd1..0425875 100644 --- a/src/Web/DOM/XMLSerializer.js +++ b/src/Web/DOM/XMLSerializer.js @@ -1,14 +1,12 @@ /* Web.DOM.XMLSerializer */ -"use strict"; - -exports.makeXMLSerializer = function () { +export function makeXMLSerializer() { return new XMLSerializer(); -}; +} -exports.serializeToString = function (doc) { +export function serializeToString(doc) { return function (xmlSerializer) { return function () { // Effect thunk return xmlSerializer.serializeToString(doc); }; }; -}; +} diff --git a/test/Main.purs b/test/Main.purs index 2fc730f..a4040d9 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -2,18 +2,17 @@ module Test.Main where import Prelude -import Data.Either (Either, fromRight, isLeft, isRight) +import Data.Either (Either, either) import Data.Maybe (Maybe(..)) import Effect (Effect) import Effect.Console (log) -import Partial.Unsafe (unsafePartial) +import Partial.Unsafe (unsafePartial, unsafeCrashWith) import Test.Data as TD import Web.DOM.Document (Document) import Web.DOM.DOMParser (DOMParser, makeDOMParser, parseFromString , parseXMLFromString, _getParserError) -import Web.DOM.XMLSerializer (XMLSerializer, makeXMLSerializer - , serializeToString) +import Web.DOM.XMLSerializer (XMLSerializer, makeXMLSerializer) parseNoteDocRaw :: DOMParser -> Effect Document parseNoteDocRaw = parseFromString "application/xml" TD.noteXml @@ -42,12 +41,10 @@ main = do Nothing -> log "no parse error found for garbageOut" Just er -> log $ "Error is:" <> er log "test 2" - shouldBeRight <- parseNoteDoc domParser - log $ "is Right? " <> show (isRight shouldBeRight) - shouldBeLeft <- parseGarbage domParser - log $ "is Left? " <> show (isLeft shouldBeLeft) + shouldBeRight <- either (\_ -> unsafeCrashWith "should be right") identity <$> parseNoteDoc domParser + either (const unit) (\_ -> unsafeCrashWith "should be left") <$> parseGarbage domParser xmlSrlzr <- makeXMLSerializer - strFromNote <- unsafePartial $ serializeToString (fromRight shouldBeRight) xmlSrlzr + strFromNote <- unsafePartial $ serializeToString shouldBeRight xmlSrlzr log $ "serialization of note is:\n" <> strFromNote log "TODO: You should add some tests."