Socket
Socket
Sign inDemoInstall

cdigit

Package Overview
Dependencies
0
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0 to 1.1.0

lib/algo/verhoeff.d.ts

6

example.js

@@ -8,1 +8,7 @@ const cdigit = require('cdigit');

console.log(cdigit.luhn.validate('12345')); // false
// Generate and validate check digits using Verhoeff algorithm
console.log(cdigit.verhoeff.generate('1234')); // '0'
console.log(cdigit.verhoeff.encode('1234')); // '12340'
console.log(cdigit.verhoeff.validate('12340')); // true
console.log(cdigit.verhoeff.validate('12345')); // false

1

lib/index.d.ts
export { default as luhn } from './algo/luhn';
export { default as verhoeff } from './algo/verhoeff';

@@ -5,1 +5,3 @@ "use strict";

exports.luhn = luhn_1.default;
var verhoeff_1 = require("./algo/verhoeff");
exports.verhoeff = verhoeff_1.default;

8

package.json
{
"name": "cdigit",
"version": "1.0.0",
"version": "1.1.0",
"description": "Generate and validate check digits",

@@ -19,5 +19,7 @@ "main": "lib/index.js",

"check digit",
"luhn algorithm",
"algorithm",
"luhn",
"modulus 10",
"mod 10"
"mod 10",
"verhoeff"
],

@@ -24,0 +26,0 @@ "author": "LiosK <contact@mail.liosk.net>",

@@ -15,2 +15,8 @@ # cdigit

console.log(cdigit.luhn.validate('12345')); // false
// Generate and validate check digits using Verhoeff algorithm
console.log(cdigit.verhoeff.generate('1234')); // '0'
console.log(cdigit.verhoeff.encode('1234')); // '12340'
console.log(cdigit.verhoeff.validate('12340')); // true
console.log(cdigit.verhoeff.validate('12345')); // false
```
export { default as luhn } from './algo/luhn';
export { default as verhoeff } from './algo/verhoeff';

@@ -5,3 +5,4 @@ const assert = require('assert').strict;

describe('Luhn algorithm', () => {
const luhn = cdigit.luhn;
const name = 'luhn';
const algo = cdigit[name];

@@ -29,6 +30,6 @@ const valid = [

describe('luhn.generate()', () => {
describe(name + '.generate()', () => {
it('generates a correct check digit', () => {
for (const [num, checkdigit] of valid) {
assert.equal(luhn.generate(num), checkdigit, `luhn.generate(${num})`);
assert.equal(algo.generate(num), checkdigit, `${name}.generate(${num})`);
}

@@ -40,3 +41,3 @@ });

num = '0000' + num;
assert.equal(luhn.generate(num), checkdigit, `luhn.generate(${num})`);
assert.equal(algo.generate(num), checkdigit, `${name}.generate(${num})`);
}

@@ -47,3 +48,3 @@ });

for (const [num, checkdigit] of valid) {
assert.equal(luhn.generate(Number(num)), checkdigit, `luhn.generate(${num})`);
assert.equal(algo.generate(Number(num)), checkdigit, `${name}.generate(${num})`);
}

@@ -53,3 +54,3 @@ });

for (const [num, checkdigit] of large) {
assert.equal(luhn.generate(num), checkdigit, `luhn.generate(${num})`);
assert.equal(algo.generate(num), checkdigit, `${name}.generate(${num})`);
}

@@ -59,7 +60,7 @@ });

describe('luhn.validate()', () => {
describe(name + '.validate()', () => {
it('returns true if a code or a pair of number and check digit is valid', () => {
for (const [num, checkdigit] of valid) {
assert.ok(luhn.validate(num + checkdigit), `luhn.validate(${num + checkdigit})`);
assert.ok(luhn.validate(num, checkdigit), `luhn.validate(${num}, ${checkdigit})`);
assert.ok(algo.validate(num + checkdigit), `${name}.validate(${num + checkdigit})`);
assert.ok(algo.validate(num, checkdigit), `${name}.validate(${num}, ${checkdigit})`);
}

@@ -69,4 +70,4 @@ });

for (const [num, checkdigit] of invalid) {
assert.ok(!luhn.validate(num + checkdigit), `!luhn.validate(${num + checkdigit})`);
assert.ok(!luhn.validate(num, checkdigit), `!luhn.validate(${num}, ${checkdigit})`);
assert.ok(!algo.validate(num + checkdigit), `!${name}.validate(${num + checkdigit})`);
assert.ok(!algo.validate(num, checkdigit), `!${name}.validate(${num}, ${checkdigit})`);
}

@@ -78,4 +79,4 @@ });

num = '0000' + num;
assert.ok(luhn.validate(num + checkdigit), `luhn.validate(${num + checkdigit})`);
assert.ok(luhn.validate(num, checkdigit), `luhn.validate(${num}, ${checkdigit})`);
assert.ok(algo.validate(num + checkdigit), `${name}.validate(${num + checkdigit})`);
assert.ok(algo.validate(num, checkdigit), `${name}.validate(${num}, ${checkdigit})`);
}

@@ -86,4 +87,4 @@ });

for (const [num, checkdigit] of valid) {
assert.ok(luhn.validate(Number(num + checkdigit)), `luhn.validate(${num + checkdigit})`);
assert.ok(luhn.validate(Number(num), checkdigit), `luhn.validate(${num}, ${checkdigit})`);
assert.ok(algo.validate(Number(num + checkdigit)), `${name}.validate(${num + checkdigit})`);
assert.ok(algo.validate(Number(num), checkdigit), `${name}.validate(${num}, ${checkdigit})`);
}

@@ -93,4 +94,4 @@ });

for (const [num, checkdigit] of large) {
assert.ok(luhn.validate(num + checkdigit), `luhn.validate(${num + checkdigit})`);
assert.ok(luhn.validate(num, checkdigit), `luhn.validate(${num}, ${checkdigit})`);
assert.ok(algo.validate(num + checkdigit), `${name}.validate(${num + checkdigit})`);
assert.ok(algo.validate(num, checkdigit), `${name}.validate(${num}, ${checkdigit})`);
}

@@ -100,6 +101,6 @@ });

describe('luhn.encode()', () => {
describe(name + '.encode()', () => {
it('appends a correct check digit to a number', () => {
for (const [num, checkdigit] of valid) {
assert.equal(luhn.encode(num), num + checkdigit, `luhn.encode(${num})`);
assert.equal(algo.encode(num), num + checkdigit, `${name}.encode(${num})`);
}

@@ -111,3 +112,3 @@ });

num = '0000' + num;
assert.equal(luhn.encode(num), num + checkdigit, `luhn.encode(${num})`);
assert.equal(algo.encode(num), num + checkdigit, `${name}.encode(${num})`);
}

@@ -118,3 +119,3 @@ });

for (const [num, checkdigit] of valid) {
assert.equal(luhn.encode(Number(num)), num + checkdigit, `luhn.encode(${num})`);
assert.equal(algo.encode(Number(num)), num + checkdigit, `${name}.encode(${num})`);
}

@@ -124,3 +125,3 @@ });

for (const [num, checkdigit] of large) {
assert.equal(luhn.encode(num), num + checkdigit, `luhn.encode(${num})`);
assert.equal(algo.encode(num), num + checkdigit, `${name}.encode(${num})`);
}

@@ -130,6 +131,6 @@ });

describe('luhn.decode()', () => {
describe(name + '.decode()', () => {
it('separates the leading digits and the last digit', () => {
for (const [num, checkdigit] of valid) {
assert.deepEqual(luhn.decode(num + checkdigit), [num, checkdigit], `luhn.decode(${num + checkdigit})`);
assert.deepEqual(algo.decode(num + checkdigit), [num, checkdigit], `${name}.decode(${num + checkdigit})`);
}

@@ -139,3 +140,3 @@ });

for (const [num, checkdigit] of valid) {
assert.deepEqual(luhn.decode(Number(num + checkdigit)), [num, checkdigit], `luhn.decode(${num + checkdigit})`);
assert.deepEqual(algo.decode(Number(num + checkdigit)), [num, checkdigit], `${name}.decode(${num + checkdigit})`);
}

@@ -145,3 +146,3 @@ });

for (const [num, checkdigit] of large) {
assert.deepEqual(luhn.decode(num + checkdigit), [num, checkdigit], `luhn.decode(${num + checkdigit})`);
assert.deepEqual(algo.decode(num + checkdigit), [num, checkdigit], `${name}.decode(${num + checkdigit})`);
}

@@ -151,3 +152,3 @@ });

describe('bulk example tests', () => {
describe('bulk example test', () => {
const examples = [

@@ -195,7 +196,7 @@ '79927398713',

const [num, checkdigit] = [e.slice(0, -1), e.slice(-1)];
assert.equal(luhn.generate(num), checkdigit, `luhn.generate(${num})`);
assert.ok(luhn.validate(e), `luhn.validate(${e})`);
assert.ok(luhn.validate(num, checkdigit), `luhn.validate(${num}, ${checkdigit})`);
assert.equal(luhn.encode(num), e, `luhn.encode(${num})`);
assert.deepEqual(luhn.decode(e), [num, checkdigit], `luhn.decode(${e})`);
assert.equal(algo.generate(num), checkdigit, `${name}.generate(${num})`);
assert.ok(algo.validate(e), `${name}.validate(${e})`);
assert.ok(algo.validate(num, checkdigit), `${name}.validate(${num}, ${checkdigit})`);
assert.equal(algo.encode(num), e, `${name}.encode(${num})`);
assert.deepEqual(algo.decode(e), [num, checkdigit], `${name}.decode(${e})`);
}

@@ -202,0 +203,0 @@ });

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc