{"id":32237627,"url":"https://github.com/mpetruska/uk-modulo-purescript","last_synced_at":"2025-10-22T13:58:00.794Z","repository":{"id":11509295,"uuid":"69889966","full_name":"mpetruska/uk-modulo-purescript","owner":"mpetruska","description":"A PureScript implementation of the VocaLink UK Bank account number modulus checking.","archived":false,"fork":false,"pushed_at":"2022-07-20T14:19:48.000Z","size":611,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-11T19:08:30.598Z","etag":null,"topics":["javascript","modulus-checking","purescript","vocalink"],"latest_commit_sha":null,"homepage":"","language":"PureScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mpetruska.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-03T16:38:51.000Z","updated_at":"2020-08-17T12:00:40.000Z","dependencies_parsed_at":"2022-08-31T04:22:52.868Z","dependency_job_id":null,"html_url":"https://github.com/mpetruska/uk-modulo-purescript","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/mpetruska/uk-modulo-purescript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetruska%2Fuk-modulo-purescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetruska%2Fuk-modulo-purescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetruska%2Fuk-modulo-purescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetruska%2Fuk-modulo-purescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpetruska","download_url":"https://codeload.github.com/mpetruska/uk-modulo-purescript/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpetruska%2Fuk-modulo-purescript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279008442,"owners_count":26084460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","modulus-checking","purescript","vocalink"],"created_at":"2025-10-22T13:57:59.890Z","updated_at":"2025-10-22T13:58:00.783Z","avatar_url":"https://github.com/mpetruska.png","language":"PureScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/mpetruska/uk-modulo-purescript.svg?branch=master)](https://travis-ci.org/mpetruska/uk-modulo-purescript)\n[![Known Vulnerabilities](https://snyk.io/test/github/mpetruska/uk-modulo-purescript/badge.svg?targetFile=package.json)](https://snyk.io/test/github/mpetruska/uk-modulo-purescript?targetFile=package.json)\n\nUK modulo - PureScript\n======================\n\nThis is an implementation of the [VocaLink UK Bank account number\nmodulus checking][VocaLink link] 6.12 (and previous versions), written in PureScript.\n\n[VocaLink link]: https://www.vocalink.com/tools/modulus-checking/\n\nModulus checking is a procedure used to determine whether a bank account number\ncan be valid. If the account number check is negative then the account cannot\nexist, but the opposite is not true (meaning that if the check succeeds that does\nnot guarantee the existence of the account).\n\nModulus checking can be used to help detect some input errors, but\nunfortunately there can be user errors that remain undetected.\n\nLicense: [MIT](LICENSE)\n\n[Demo page](https://mpetruska.github.io/uk-modulo-purescript/)\n\nNotes on validating sort codes\n------------------------------\n\nThe [\"Industry Sorting Code Directory\" (ISCD)][ICSD link]\nshould be used to validate UK sort codes.\n\n[ICSD link]: https://en.wikipedia.org/wiki/Industry_Sorting_Code_Directory\n\nGetting started\n---------------\n\nFor PureScript projects:\n\n    npm install purescript --save-dev\n    bower install purescript-uk-modulo --save\n\nSetting up gulp build for JavaScript projects:\n\n    npm install purescript --save-dev\n    bower install gulp-purescript --save-dev\n    bower install purescript-uk-modulo --save\n\n```JavaScript\n\"use strict\";\n\nvar gulp = require(\"gulp\"),\n    purescript = require(\"gulp-purescript\");\n\n// PureScript sources\nvar sources = [\n  \"bower_components/purescript-*/src/**/*.purs\"\n];\n\n// Build the PureScript sources and put resultant javascript files into output.\ngulp.task(\"make\", function() {\n  return purescript.psc({\n    src: sources\n  });\n});\n\ngulp.task(\"default\", [\"make\"]);\n```\n\nUsage\n-----\n\nPureScript:\n\n```PureScript\nimport Data.Either (Either(..))\nimport ModulusCheck (check)\n\n-- valid account number\ncheck \"089999\" \"66374958\" === Right true\n\n-- invalid account number\ncheck \"089999\" \"66374959\" === Right false\n\n-- invalid format\ncheck \"089999\" \"xxxx\" === Left \"Account number format is not valid\"\n\n```\n\nJavaScript:\n\n```JavaScript\n// valid account number\nPS.ModulusCheck.JavaScript.check(\"089999\", \"66374958\").isValid === true;\n\n// invalid account number\nvar result = PS.ModulusCheck.JavaScript.check(\"089999\", \"66374959\");\nresult.isValid === false;\nresult.isError === false;\n\n// invalid format\nvar result = PS.ModulusCheck.JavaScript.check(\"089999\", \"xxxx\");\nresult.isError === true;\nresult.error === \"Account number format is not valid\";\n```\n\nIssues\n------\n\nPlease report issues and feature requests [here](https://github.com/mpetruska/uk-modulo-purescript/issues).\n\nVersion history\n---------------\n\n* 6.12.0 - updates implementation according to [version 6.12 of the spec](https://www.vocalink.com/media/4475/vocalink-validating-account-numbers-v612.pdf)\n  (valid from 2020-07-14)\n* 6.1.0  - updates implementation according to [version 6.1 of the spec](https://www.vocalink.com/media/4373/vocalink-validating-account-numbers-v61.pdf)\n  (valid from 2020-04-07)\n* 6.00.0 - updates implementation according to [version 6.00 of the spec](https://www.vocalink.com/media/4363/vocalink-validating-account-numbers-v600.pdf)\n  (valid from 2020-04-06)\n* 5.90.0 - updates implementation according to [version 5.90 of the spec](https://www.vocalink.com/media/4325/vocalink-validating-account-numbers-v590.pdf)\n  (valid from 2020-02-03)\n* 5.80.0 - updates implementation according to [version 5.80 of the spec](https://www.vocalink.com/media/3513/vocalink-validating-account-numbers-v580.pdf)\n  (valid from 2019-09-30)\n* 5.70.0 - updates implementation according to [version 5.70 of the spec](https://www.vocalink.com/media/3103/vocalink-validating-account-numbers-v570.pdf)\n  (valid from 2019-05-27)\n* 5.50.0 - updates implementation according to [version 5.50 of the spec](https://www.vocalink.com/media/3068/vocalink-validating-account-numbers-v550.pdf)\n  (valid from 2019-03-18)\n* 5.40.0 - updates implementation according to [version 5.40 of the spec](https://www.vocalink.com/media/3061/vocalink-validating-account-numbers-v540.pdf)\n  (valid from 2019-01-28)\n* 5.30.0 - updates implementation according to [version 5.30 of the spec](https://www.vocalink.com/media/3047/vocalink-validating-account-numbers-v530.pdf)\n  (valid from 2018-11-26)\n* 5.20.1 - upgrades to Purescript version 0.12\n* 5.20.0 - updates implementation according to [version 5.20 of the spec](https://www.vocalink.com/media/3038/validating-account-numbers-v520.pdf)\n  (valid from 2018-10-22)\n* 5.10.0 - updates implementation according to [version 5.10 of the spec](https://www.vocalink.com/media/3035/validating-account-numbers-v510.pdf)\n  (valid from 2018-09-17)\n* 5.0.0 - updates implementation according to [version 5.00 of the spec](https://www.vocalink.com/media/3019/vocalink-validating-account-numbers-v500.pdf)\n  (valid from 2018-08-06)\n* 1.9.0 - updates implementation according to [version 4.90 of the spec](https://www.vocalink.com/media/3004/vocalink-validating-account-numbers-v490.pdf)\n  (valid from 2018-07-02)\n* 1.8.0 - updates implementation according to [version 4.80 of the spec](https://www.vocalink.com/media/2920/vocalink-validating-account-numbers-v480.pdf)\n  (valid from 2018-04-16)\n* 1.7.0 - updates implementation according to [version 4.70 of the spec](https://www.vocalink.com/media/2904/vocalink-validating-account-numbers-v47.pdf)\n  (valid from 2018-03-26)\n* 1.6.0 - updates implementation according to [version 4.60 of the spec](https://www.vocalink.com/media/2771/vocalink-validating-account-numbers-v460.pdf)\n  (valid from 2017-10-09)\n* 1.5.0 - updates implementation according to [version 4.40 of the spec](https://www.vocalink.com/media/2717/vocalink-validating-account-numbers-v440.pdf)\n  (valid from 2017-08-21)\n* 1.4.0 - updates implementation according to [version 4.30 of the spec](https://www.vocalink.com/media/2467/vocalink-validating-account-numbers-v430.pdf)\n  (valid from 2017-07-03)\n* 1.3.0 - updates implementation according to [version 4.20 of the spec](https://www.vocalink.com/media/2434/vocalink-validating-account-numbers-v420.pdf)\n  (valid from 2017-06-12)\n* 1.2.0 - updates implementation according to [version 4.10 of the spec](https://www.vocalink.com/media/2295/vocalink-validating-account-numbers-v410.pdf)\n  (valid from 2017-01-09)\n* 1.1.0 - updates implementation according to [version 4.00 of the spec](https://www.vocalink.com/media/2101/vocalink-validating-account-numbers-v400.pdf)\n  (valid from 2017-01-09)\n* 1.0.1 - build updated, PureScript version 0.10.3\n* 1.0.0 - initial release, spec version 3.90\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpetruska%2Fuk-modulo-purescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpetruska%2Fuk-modulo-purescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpetruska%2Fuk-modulo-purescript/lists"}