node-iso11649
Advanced tools
Comparing version 1.0.1 to 1.1.0
139
index.js
@@ -6,2 +6,3 @@ 'use strict'; | ||
}); | ||
/* eslint-disable */ | ||
var charTable = { | ||
@@ -12,81 +13,111 @@ A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, G: 16, | ||
V: 31, W: 32, X: 33, Y: 34, Z: 35 | ||
}; | ||
var divider = 97; | ||
var format = /^RF[0-9]{2}[0-9A-Z]+$/; | ||
/* eslint-enable */ | ||
var normalizeRef = function normalizeRef(ref) { | ||
return ref ? ('' + ref).replace(/ /g, '').toUpperCase() : ''; | ||
};var normalizeReference = exports.normalizeReference = function normalizeReference(reference) { | ||
return reference ? ('' + reference).replace(/ /g, '').toUpperCase() : ''; | ||
}; | ||
var substituteChar = function substituteChar(char) { | ||
return isNaN(char) ? charTable[char] : char; | ||
var substituteCharWithNumber = exports.substituteCharWithNumber = function substituteCharWithNumber(char) { | ||
return Number.isNaN(Number(char)) ? charTable[char] : char; | ||
}; | ||
var mod = function mod(divident) { | ||
var modulo97 = exports.modulo97 = function modulo97(divident) { | ||
var chunks = divident.match(/.{1,7}/g); | ||
return chunks.reduce(function (prev, curr) { | ||
return ('' + prev + curr) % divider; | ||
return ('' + prev + curr) % 97; | ||
}, ''); | ||
}; | ||
'use strict'; | ||
var validate = exports.validate = function validate(reference) { | ||
var normalizedRef = normalizeRef(reference); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var isValidFormat = function isValidFormat(ref) { | ||
return !!ref.match(format); | ||
}; | ||
var _common = require('./common'); | ||
var isValidChecksum = function isValidChecksum(ref) { | ||
var preResult = moveRfToEnd(ref).map(substituteChar).join(''); | ||
return mod(preResult) === 1; | ||
}; | ||
var ceil10 = function ceil10(num) { | ||
return Math.ceil(num / 10) * 10; | ||
}; | ||
var moveRfToEnd = function moveRfToEnd(ref) { | ||
return (ref.substr(4) + ref.substr(0, 4)).split(''); | ||
var toSum = function toSum(prev, curr) { | ||
return prev + curr; | ||
}; | ||
var multiplyWith = function multiplyWith(multipliers) { | ||
return function (digit, index) { | ||
return digit * multipliers[index % 3]; | ||
}; | ||
}; | ||
return normalizedRef.length <= 25 && isValidFormat(normalizedRef) && isValidChecksum(normalizedRef); | ||
var calculateChecksum = function calculateChecksum(reference) { | ||
var digits = reference.split('').reverse(); | ||
var multipliers = [7, 3, 1]; | ||
var sum = digits.map(multiplyWith(multipliers)).reduce(toSum); | ||
return (ceil10(sum) - sum) % 10; | ||
}; | ||
var generate = exports.generate = function generate(reference) { | ||
var normalizedRef = normalizeRef(reference); | ||
var generateReference = function generateReference() { | ||
var reference = '' + Date.now(); | ||
var checksum = calculateChecksum(reference); | ||
return '' + reference + checksum; | ||
}; | ||
var generateRFreference = function generateRFreference(ref) { | ||
return 'RF' + calculateRFChecksum(ref) + ref; | ||
}; | ||
var calculateRFChecksum = function calculateRFChecksum(reference) { | ||
var preResult = (reference + 'RF00').split('').map(_common.substituteCharWithNumber).join(''); | ||
var checksum = 98 - (0, _common.modulo97)(preResult); | ||
return checksum < 10 ? '0' + checksum : checksum; | ||
}; | ||
var calculateRFChecksum = function calculateRFChecksum(ref) { | ||
var preResult = (ref + 'RF00').split('').map(substituteChar).join(''); | ||
var checksum = 98 - mod(preResult); | ||
return checksum < 10 ? '0' + checksum : checksum; | ||
}; | ||
var generateRFreference = function generateRFreference(reference) { | ||
return 'RF' + calculateRFChecksum(reference) + reference; | ||
}; | ||
var generateReference = function generateReference() { | ||
var ref = '' + Date.now(); | ||
var checksum = calculateChecksum(ref); | ||
return '' + ref + checksum; | ||
}; | ||
exports.default = function (reference) { | ||
return generateRFreference((0, _common.normalizeReference)(reference) || generateReference()); | ||
}; | ||
'use strict'; | ||
var calculateChecksum = function calculateChecksum(ref) { | ||
var digits = ref.split('').reverse(); | ||
var multipliers = [7, 3, 1]; | ||
var sum = digits.map(multiply(multipliers)).reduce(toSum); | ||
return (ceil10(sum) - sum) % 10; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.validate = exports.generate = undefined; | ||
var multiply = function multiply(multipliers) { | ||
return function (digit, index) { | ||
return digit * multipliers[index % 3]; | ||
}; | ||
}; | ||
var _generate = require('./generate'); | ||
var toSum = function toSum(prev, curr) { | ||
return prev + curr; | ||
}; | ||
var _generate2 = _interopRequireDefault(_generate); | ||
var ceil10 = function ceil10(num) { | ||
return Math.ceil(num / 10) * 10; | ||
}; | ||
var _validate = require('./validate'); | ||
return generateRFreference(normalizedRef || generateReference()); | ||
var _validate2 = _interopRequireDefault(_validate); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.generate = _generate2.default; | ||
exports.validate = _validate2.default; | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _common = require('./common'); | ||
var REFERENCE_FORMAT = /^RF[0-9]{2}[0-9A-Z]+$/; | ||
var moveRfToEnd = function moveRfToEnd(reference) { | ||
return (reference.substr(4) + reference.substr(0, 4)).split(''); | ||
}; | ||
var isValidChecksum = function isValidChecksum(reference) { | ||
var preResult = moveRfToEnd(reference).map(_common.substituteCharWithNumber).join(''); | ||
return (0, _common.modulo97)(preResult) === 1; | ||
}; | ||
var isValidFormat = function isValidFormat(reference) { | ||
return !!reference.match(REFERENCE_FORMAT); | ||
}; | ||
exports.default = function (reference) { | ||
var normalizedRef = (0, _common.normalizeReference)(reference); | ||
return normalizedRef.length <= 25 && isValidFormat(normalizedRef) && isValidChecksum(normalizedRef); | ||
}; |
{ | ||
"name": "node-iso11649", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "ISO 11649:2009 creditor reference library for node", | ||
@@ -8,3 +8,2 @@ "main": "index.js", | ||
"license": "MIT", | ||
"main": "index.js", | ||
"repository": { | ||
@@ -26,15 +25,19 @@ "type": "git", | ||
"test": "babel-tape-runner test/*.js | faucet", | ||
"prepublish": "babel src/ -o index.js", | ||
"lint": "eslint src/*.js" | ||
"prepublishOnly": "babel src/ -o index.js", | ||
"lint": "eslint src/*.js test/*.js" | ||
}, | ||
"devDependencies": { | ||
"babel-cli": "6.3.17", | ||
"babel-eslint": "5.0.0-beta6", | ||
"babel-preset-es2015": "6.3.13", | ||
"babel-tape-runner": "2.0.0", | ||
"eslint": "1.10.3", | ||
"eslint-config-airbnb": "2.1.1", | ||
"ajv": "6.2.0", | ||
"babel-cli": "6.26.0", | ||
"babel-eslint": "8.2.2", | ||
"babel-preset-env": "1.6.1", | ||
"babel-tape-runner": "2.0.1", | ||
"eslint": "4.18.1", | ||
"eslint-config-airbnb": "16.1.0", | ||
"eslint-plugin-import": "2.9.0", | ||
"eslint-plugin-jsx-a11y": "6.0.3", | ||
"eslint-plugin-react": "7.7.0", | ||
"faucet": "0.0.1", | ||
"tape": "4.2.2" | ||
"tape": "4.9.0" | ||
} | ||
} |
node-iso11649 | ||
============= | ||
[![CircleCI](https://circleci.com/gh/nruotsal/node-iso11649/tree/master.svg?style=svg)](https://circleci.com/gh/nruotsal/node-iso11649/tree/master) | ||
[![Greenkeeper badge](https://badges.greenkeeper.io/nruotsal/node-iso11649.svg)](https://greenkeeper.io/) | ||
ISO 11649:2009 RF creditor reference library for node | ||
@@ -5,0 +8,0 @@ |
@@ -1,72 +0,4 @@ | ||
const charTable = { | ||
A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, G: 16, | ||
H: 17, I: 18, J: 19, K: 20, L: 21, M: 22, N: 23, | ||
O: 24, P: 25, Q: 26, R: 27, S: 28, T: 29, U: 30, | ||
V: 31, W: 32, X: 33, Y: 34, Z: 35 | ||
} | ||
const divider = 97 | ||
const format = /^RF[0-9]{2}[0-9A-Z]+$/ | ||
import generate from './generate' | ||
import validate from './validate' | ||
const normalizeRef = (ref) => | ||
ref ? ('' + ref).replace(/ /g, '').toUpperCase() : '' | ||
const substituteChar = (char) => | ||
isNaN(char) ? charTable[char] : char | ||
const mod = (divident) => { | ||
const chunks = divident.match(/.{1,7}/g) | ||
return chunks.reduce((prev, curr) => `${prev}${curr}` % divider, '') | ||
} | ||
export const validate = (reference) => { | ||
const normalizedRef = normalizeRef(reference) | ||
const isValidFormat = (ref) => | ||
!!ref.match(format) | ||
const isValidChecksum = (ref) => { | ||
const preResult = moveRfToEnd(ref).map(substituteChar).join('') | ||
return mod(preResult) === 1 | ||
} | ||
const moveRfToEnd = (ref) => | ||
(ref.substr(4) + ref.substr(0, 4)).split('') | ||
return normalizedRef.length <= 25 | ||
&& isValidFormat(normalizedRef) | ||
&& isValidChecksum(normalizedRef) | ||
} | ||
export const generate = (reference) => { | ||
const normalizedRef = normalizeRef(reference) | ||
const generateRFreference = (ref) => | ||
`RF${calculateRFChecksum(ref)}${ref}` | ||
const calculateRFChecksum = (ref) => { | ||
const preResult = `${ref}RF00`.split('').map(substituteChar).join('') | ||
const checksum = 98 - mod(preResult) | ||
return checksum < 10 ? `0${checksum}` : checksum | ||
} | ||
const generateReference = () => { | ||
const ref = ('' + Date.now()) | ||
const checksum = calculateChecksum(ref) | ||
return `${ref}${checksum}` | ||
} | ||
const calculateChecksum = (ref) => { | ||
const digits = ref.split('').reverse() | ||
const multipliers = [7, 3, 1] | ||
const sum = digits.map(multiply(multipliers)).reduce(toSum) | ||
return (ceil10(sum) - sum) % 10 | ||
} | ||
const multiply = (multipliers) => (digit, index) => digit * multipliers[index % 3] | ||
const toSum = (prev, curr) => prev + curr | ||
const ceil10 = (num) => Math.ceil(num / 10) * 10 | ||
return generateRFreference(normalizedRef || generateReference()) | ||
} | ||
export {generate, validate} |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
13594
14
219
75
12
1