diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d28510..50d9084 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,7 @@ jobs: - name: Set up a PureScript toolchain uses: purescript-contrib/setup-purescript@main with: + purescript: "unstable" purs-tidy: "latest" - name: Cache PureScript dependencies @@ -38,8 +39,17 @@ jobs: - name: Build tests run: spago -x test.dhall build --no-install --purs-args '--censor-lib --strict' - - name: Run tests - run: spago -x test.dhall test --no-install +# - name: Run tests +# run: spago -x test.dhall test --no-install - name: Check formatting run: purs-tidy check src test + + - name: Verify Bower & Pulp + run: | + npm install bower pulp@16.0.0-0 + npx bower install + npx pulp build -- --censor-lib --strict + if [ -d "test" ]; then + npx pulp test + fi diff --git a/CHANGELOG.md b/CHANGELOG.md index e2b46cd..4068438 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ Notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +Breaking Changes: +- Migrate FFI to ES modules (#20 by @JordanMartinez) + ## v6.0.2 2021-07-11 Move quickcheck test dependencies to `test.dhall`. diff --git a/bower.json b/bower.json index f4c8a7b..47b5645 100644 --- a/bower.json +++ b/bower.json @@ -1,29 +1,29 @@ { - "name": "purescript-uint", - "license": [ - "MIT" - ], - "repository": { - "type": "git", - "url": "https://github.com/purescript-contrib/purescript-uint.git" - }, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "output" - ], - "dependencies": { - "purescript-enums": "^v5.0.0", - "purescript-gen": "^v3.0.0", - "purescript-math": "^v3.0.0", - "purescript-maybe": "^v5.0.0", - "purescript-prelude": "^v5.0.0", - "purescript-psci-support": "^v5.0.0" - }, - "devDependencies": { - "purescript-effect": "^v3.0.0", - "purescript-quickcheck": "^v7.1.0", - "purescript-quickcheck-laws": "^v6.0.1" - } + "name": "purescript-uint", + "license": [ + "MIT" + ], + "repository": { + "type": "git", + "url": "https://github.com/purescript-contrib/purescript-uint.git" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "output" + ], + "dependencies": { + "purescript-enums": "master", + "purescript-gen": "master", + "purescript-math": "master", + "purescript-maybe": "master", + "purescript-prelude": "master" + }, + "devDependencies": { + "purescript-effect": "master", + "purescript-psci-support": "master", + "purescript-quickcheck": "master", + "purescript-quickcheck-laws": "main" + } } diff --git a/packages.dhall b/packages.dhall index 2a73f20..582d6d3 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,126 +1,4 @@ -{- -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. - -## Warning: Don't Move This Top-Level Comment! - -Due to how `dhall format` currently works, this comment's -instructions cannot appear near corresponding sections below -because `dhall format` will delete the comment. However, -it will not delete a top-level comment like this one. - -## 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: -Replace the overrides' "{=}" (an empty record) with the following idea -The "//" or "⫽" means "merge these two records and - when they have the same value, use the one on the right:" -------------------------------- -let overrides = - { packageName = - upstream.packageName // { updateEntity1 = "new value", updateEntity2 = "new value" } - , packageName = - upstream.packageName // { version = "v4.0.0" } - , packageName = - upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" } - } -------------------------------- - -Example: -------------------------------- -let overrides = - { halogen = - upstream.halogen // { version = "master" } - , halogen-vdom = - upstream.halogen-vdom // { version = "v4.0.0" } - } -------------------------------- - -### Additions - -Purpose: -- Add packages that aren't already included in the default package set - -Syntax: -Replace the additions' "{=}" (an empty record) with the following idea: -------------------------------- -let additions = - { package-name = - { dependencies = - [ "dependency1" - , "dependency2" - ] - , repo = - "https://example.com/path/to/git/repo.git" - , version = - "tag ('v4.0.0') or branch ('master')" - } - , package-name = - { dependencies = - [ "dependency1" - , "dependency2" - ] - , repo = - "https://example.com/path/to/git/repo.git" - , version = - "tag ('v4.0.0') or branch ('master')" - } - , etc. - } -------------------------------- - -Example: -------------------------------- -let additions = - { 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" - } - } -------------------------------- --} let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.14.3-20210722/packages.dhall sha256:1ceb43aa59436bf5601bac45f6f3781c4e1f0e4c2b8458105b018e5ed8c30f8c - -let overrides = {=} - -let additions = {=} + https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall -in upstream // overrides // additions +in upstream diff --git a/spago.dhall b/spago.dhall index 519f653..d9faab3 100644 --- a/spago.dhall +++ b/spago.dhall @@ -3,7 +3,6 @@ [ "prelude" , "math" , "maybe" - , "psci-support" , "enums" , "gen" ] diff --git a/src/Data/UInt.js b/src/Data/UInt.js index ea027a6..db1269e 100644 --- a/src/Data/UInt.js +++ b/src/Data/UInt.js @@ -1,10 +1,8 @@ -"use strict"; - -exports.from = function (val) { +export function from(val) { return val >>> 0; -}; +} -exports.exact = function (just) { +export function exact(just) { return function (nothing) { return function (conv) { return function (val) { @@ -16,57 +14,57 @@ exports.exact = function (just) { }; }; }; -}; +} -exports.toInt = function (uval) { +export function toInt(uval) { return uval | 0; -}; +} -exports.toNumber = function (uval) { +export function toNumber(uval) { return uval; -}; +} -exports.uintAdd = function (x) { +export function uintAdd(x) { return function (y) { return (x + y) >>> 0; }; -}; +} -exports.uintMul = function (x) { +export function uintMul(x) { return function (y) { return Math.imul(x, y) >>> 0; }; -}; +} -exports.uintSub = function (x) { +export function uintSub(x) { return function (y) { return (x - y) >>> 0; }; -}; +} -exports.uintDiv = function (x) { +export function uintDiv(x) { return function (y) { return (x / y) >>> 0; }; -}; +} -exports.uintMod = function (x) { +export function uintMod(x) { return function (y) { return (x % y) >>> 0; }; -}; +} -exports.uintDegree = function (x) { +export function uintDegree(x) { return Math.abs(x | 0); -}; +} -exports.uintEq = function (x) { +export function uintEq(x) { return function (y) { return x == y; }; -}; +} -exports.uintCmp = function (lt) { +export function uintCmp(lt) { return function (eq) { return function (gt) { return function (x) { @@ -78,62 +76,62 @@ exports.uintCmp = function (lt) { }; }; }; -}; +} -exports.fromStringImpl = function (s) { +export function fromStringImpl(s) { var n = Number(s); if (n === parseInt(s)) { return n; } return NaN; -}; +} -exports.toString = function (x) { +export function toString(x) { return x.toString(); -}; +} -exports.pow = function (u) { +export function pow(u) { return function (p) { return Math.pow(u, p) >>> 0; }; -}; +} -exports.and = function (n1) { +export function and(n1) { return function (n2) { return (n1 & n2) >>> 0; }; -}; +} -exports.or = function (n1) { +export function or(n1) { return function (n2) { return (n1 | n2) >>> 0; }; -}; +} -exports.xor = function (n1) { +export function xor(n1) { return function (n2) { return (n1 ^ n2) >>> 0; }; -}; +} -exports.shl = function (n1) { +export function shl(n1) { return function (n2) { return (n1 << n2) >>> 0; }; -}; +} -exports.shr = function (n1) { +export function shr(n1) { return function (n2) { return (n1 >> n2) >>> 0; }; -}; +} -exports.zshr = function (n1) { +export function zshr(n1) { return function (n2) { return (n1 >>> n2) >>> 0; }; -}; +} -exports.complement = function (n) { +export function complement(n) { return (~n >>> 0); -}; +}