Socket
Socket
Sign inDemoInstall

mrz

Package Overview
Dependencies
Maintainers
4
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mrz - npm Package Compare versions

Comparing version 4.1.0 to 4.2.0

lib-esm/parse/getDocumentNumber.d.ts

1

lib-esm/formats.js

@@ -1,2 +0,1 @@

'use strict';
export const formats = {

@@ -3,0 +2,0 @@ TD1: 'TD1',

@@ -1,2 +0,1 @@

'use strict';
const states = {

@@ -3,0 +2,0 @@ "AFG": "Afghanistan",

@@ -1,2 +0,1 @@

'use strict';
import { formats } from './formats';

@@ -3,0 +2,0 @@ import states from './generated/states';

@@ -1,2 +0,1 @@

'use strict';
import { fieldTypes } from './createFieldParser';

@@ -3,0 +2,0 @@ const numberToLetterMismatches = {

@@ -1,2 +0,1 @@

'use strict';
export function checkLines(lines) {

@@ -3,0 +2,0 @@ if (typeof lines === 'string') {

@@ -1,2 +0,1 @@

'use strict';
import { ParseTextError } from '../parsers/parseText';

@@ -3,0 +2,0 @@ import { autoCorrection } from './autoCorrection';

@@ -1,2 +0,1 @@

'use strict';
import parseCompositeCheckDigit from '../parsers/parseCompositeCheckDigit';

@@ -3,0 +2,0 @@ import parseDate from '../parsers/parseDate';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import frenchDrivingLicenceFields from './frenchDrivingLicenceFields';

@@ -1,2 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/frenchDrivingLicence/parseDocumentCode';

@@ -3,0 +2,0 @@ import { parseAlpha } from '../parsers/parseAlpha';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import frenchNationalIdFields from './frenchNationalIdFields';

@@ -1,2 +0,1 @@

'use strict';
import { parseAlpha } from '../parsers/parseAlpha';

@@ -3,0 +2,0 @@ import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -1,2 +0,2 @@

'use strict';
import { getDocumentNumber } from './getDocumentNumber';
function getDetails(lines, fieldParsers, autocorrectArray) {

@@ -48,2 +48,3 @@ const details = [];

fields: fields.fields,
documentNumber: getDocumentNumber(format, fields.fields),
valid: fields.allValid,

@@ -50,0 +51,0 @@ };

@@ -0,6 +1,7 @@

import { ParseResult } from '../types';
export interface ParseMRZOptions {
autocorrect?: boolean;
}
declare function parseMRZ(inputLines: string | string[], options?: ParseMRZOptions): import("..").ParseResult;
declare function parseMRZ(inputLines: string | string[], options?: ParseMRZOptions): ParseResult;
export default parseMRZ;
//# sourceMappingURL=parse.d.ts.map

@@ -1,2 +0,1 @@

'use strict';
import { checkLines } from './checkLines';

@@ -3,0 +2,0 @@ import { parsers } from './parsers';

@@ -1,2 +0,1 @@

'use strict';
import parseFrenchDrivingLicense from './frenchDrivingLicence';

@@ -3,0 +2,0 @@ import parseFrenchNationalId from './frenchNationalId';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import { getResult } from './getResult';

@@ -1,2 +0,1 @@

'use strict';
import { parseNumber } from '../parsers/parseNumber';

@@ -3,0 +2,0 @@ import { checkSeparator } from '../parsers/swissDrivingLicense/checkSeparator';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import { getResult } from './getResult';

@@ -1,2 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -3,0 +2,0 @@ import { parseDocumentNumberOptional } from '../parsers/parseDocumentNumberOptional';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import { getResult } from './getResult';

@@ -1,2 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -3,0 +2,0 @@ import { parseOptional } from '../parsers/parseOptional';

@@ -1,2 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -3,0 +2,0 @@ import { getResult } from './getResult';

@@ -1,2 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodePassport';

@@ -3,0 +2,0 @@ import { parsePersonalNumber } from '../parsers/parsePersonalNumber';

@@ -1,2 +0,1 @@

'use strict';
export function check(string, value) {

@@ -3,0 +2,0 @@ let code = 0;

@@ -1,2 +0,1 @@

'use strict';
export function cleanText(string) {

@@ -3,0 +2,0 @@ return string.replace(/<+$/g, '').replace(/</g, ' ');

@@ -1,2 +0,1 @@

'use strict';
/**

@@ -3,0 +2,0 @@ * D1 seems to be the most common,

@@ -1,2 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -3,0 +2,0 @@ export function parseAlpha(source) {

@@ -1,2 +0,1 @@

'use strict';
import { check } from './check';

@@ -3,0 +2,0 @@ export default function parseCompositeCheckDigit(checkDigit, ...sources) {

@@ -1,2 +0,1 @@

'use strict';
export default function parseDate(value) {

@@ -3,0 +2,0 @@ if (!value.match(/^[0-9<]{4,6}$/)) {

@@ -1,2 +0,1 @@

'use strict';
import { check } from './check';

@@ -3,0 +2,0 @@ export default function parseCheckDigit(checkDigit, value) {

@@ -1,2 +0,1 @@

'use strict';
export default function parseDocumentCodeId(source) {

@@ -3,0 +2,0 @@ const first = source.charAt(0);

@@ -1,2 +0,1 @@

'use strict';
export default function parseDocumentCodePassport(source) {

@@ -3,0 +2,0 @@ const first = source.charAt(0);

@@ -1,2 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -3,0 +2,0 @@ export default function parseDocumentNumber(source, checkDigit, optional) {

@@ -1,2 +0,1 @@

'use strict';
import { check } from './check';

@@ -3,0 +2,0 @@ export default function parseDocumentNumberCheckDigit(checkDigit, source, optional) {

@@ -1,2 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -3,0 +2,0 @@ export function parseDocumentNumberOptional(optional, checkDigit) {

@@ -1,2 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -3,0 +2,0 @@ export default function parseFirstName(source) {

@@ -1,2 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -3,0 +2,0 @@ export default function parseLastName(source) {

@@ -1,2 +0,1 @@

'use strict';
export function parseNumber(source) {

@@ -3,0 +2,0 @@ if (!source.match(/^[0-9]+$/)) {

@@ -1,2 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -3,0 +2,0 @@ export function parseOptional(source) {

@@ -1,2 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -3,0 +2,0 @@ export function parsePersonalNumber(source) {

@@ -1,2 +0,1 @@

'use strict';
import { check } from './check';

@@ -3,0 +2,0 @@ import { cleanText } from './cleanText';

@@ -1,2 +0,1 @@

'use strict';
export default function parseSex(source) {

@@ -3,0 +2,0 @@ switch (source) {

@@ -1,2 +0,1 @@

'use strict';
import STATES from '../generated/states';

@@ -3,0 +2,0 @@ import { cleanText } from './cleanText';

@@ -1,2 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -3,0 +2,0 @@ export function parseText(source, initialStart, regexp = /^[0-9A-Z<]+$/) {

@@ -1,2 +0,1 @@

'use strict';
export function checkSeparator(source) {

@@ -3,0 +2,0 @@ if (!source.match(/^<*$/)) {

@@ -1,2 +0,1 @@

'use strict';
export default function parseDocumentCode(source) {

@@ -3,0 +2,0 @@ if (source !== 'FA') {

@@ -1,2 +0,1 @@

'use strict';
import parseLanguageCode from './parseLanguageCode';

@@ -3,0 +2,0 @@ export default function parseDocumentNumber(source) {

@@ -1,2 +0,1 @@

'use strict';
export default function parseIssuingState(source) {

@@ -3,0 +2,0 @@ if (source !== 'CHE' && source !== 'LIE') {

@@ -1,2 +0,1 @@

'use strict';
export default function parseLanguageCode(languageCode) {

@@ -3,0 +2,0 @@ switch (languageCode) {

@@ -28,2 +28,3 @@ export interface Autocorrect {

fields: FieldRecords;
documentNumber: string | null;
details: Details[];

@@ -30,0 +31,0 @@ }

@@ -1,3 +0,2 @@

'use strict';
export {};
//# sourceMappingURL=types.js.map

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.formats = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const states = {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {

@@ -3,0 +3,0 @@ if (k2 === undefined) k2 = k;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.autoCorrection = exports.numberToLetter = exports.letterToNumber = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.checkLines = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.fieldTypes = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,4 +0,5 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getResult = void 0;
const getDocumentNumber_1 = require("./getDocumentNumber");
function getDetails(lines, fieldParsers, autocorrectArray) {

@@ -50,2 +51,3 @@ const details = [];

fields: fields.fields,
documentNumber: (0, getDocumentNumber_1.getDocumentNumber)(format, fields.fields),
valid: fields.allValid,

@@ -52,0 +54,0 @@ };

@@ -0,6 +1,7 @@

import { ParseResult } from '../types';
export interface ParseMRZOptions {
autocorrect?: boolean;
}
declare function parseMRZ(inputLines: string | string[], options?: ParseMRZOptions): import("..").ParseResult;
declare function parseMRZ(inputLines: string | string[], options?: ParseMRZOptions): ParseResult;
export default parseMRZ;
//# sourceMappingURL=parse.d.ts.map

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const checkLines_1 = require("./checkLines");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {

@@ -3,0 +3,0 @@ if (k2 === undefined) k2 = k;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.check = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.cleanText = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ /**

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parseAlpha = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const check_1 = require("./check");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseDate(value) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const check_1 = require("./check");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseDocumentCodeId(source) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseDocumentCodePassport(source) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const cleanText_1 = require("./cleanText");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const check_1 = require("./check");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parseDocumentNumberOptional = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const parseText_1 = require("./parseText");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ const parseText_1 = require("./parseText");

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parseNumber = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parseOptional = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parsePersonalNumber = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.parsePersonalNumberCheckDigit = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseSex(source) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.ParseTextError = exports.parseText = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ exports.checkSeparator = void 0;

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseDocumentCode(source) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -3,0 +3,0 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseIssuingState(source) {

@@ -1,2 +0,2 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

@@ -3,0 +3,0 @@ function parseLanguageCode(languageCode) {

@@ -28,2 +28,3 @@ export interface Autocorrect {

fields: FieldRecords;
documentNumber: string | null;
details: Details[];

@@ -30,0 +31,0 @@ }

@@ -1,3 +0,3 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map
{
"name": "mrz",
"version": "4.1.0",
"version": "4.2.0",
"description": "Parse MRZ (Machine Readable Zone) from identity documents",

@@ -50,13 +50,13 @@ "main": "./lib/index.js",

"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.23.0",
"@babel/preset-typescript": "^7.23.2",
"@types/jest": "^29.5.6",
"@babel/plugin-transform-modules-commonjs": "^7.24.6",
"@babel/preset-typescript": "^7.24.6",
"@types/jest": "^29.5.12",
"cheminfo-build": "^1.2.0",
"eslint": "^8.52.0",
"eslint-config-cheminfo-typescript": "^12.0.4",
"eslint-config-cheminfo-typescript": "^12.4.0",
"jest": "^29.7.0",
"prettier": "^3.0.3",
"rimraf": "^5.0.5",
"typescript": "^5.2.2"
"prettier": "^3.2.5",
"rimraf": "^5.0.7",
"typescript": "^5.4.5"
}
}

@@ -84,2 +84,8 @@ # mrz

##### result.documentNumber
The document number, as can be found in the visual elements of the document, outside the MRZ. For some documents, it may
be composed of multiple parsed fields. It may also not include the MRZ field named `documentNumber`. If any of the used
fields is invalid, this field will be set to `null`.
##### result.details

@@ -117,7 +123,7 @@

http://www.astra2.admin.ch/media/pdfpub/2003-10-15_2262_f.pdf
https://www.astra.admin.ch/dam/astra/fr/dokumente/dokumente-strassenverkehr/kreisschreiben/ch-fak.pdf.download.pdf/Le%20permis%20de%20conduire%20suisse%20format%20carte%20de%20cr%C3%A9dit%20(PCC).pdf
### French national id
https://fr.wikipedia.org/wiki/Carte_nationale_d%27identit%C3%A9_en_France#Codage_Bande_MRZ_(lecture_optique)
https://fr.wikipedia.org/wiki/Carte_nationale_d%27identit%C3%A9_en_France#Codage_bande_%C3%A0_lecture_optique

@@ -124,0 +130,0 @@ ## License

@@ -1,3 +0,1 @@

'use strict';
export type FormatType = keyof typeof formats;

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import states from '../states';

@@ -4,0 +2,0 @@

@@ -1,2 +0,1 @@

'use strict';
const states = {

@@ -3,0 +2,0 @@ "AFG": "Afghanistan",

@@ -1,3 +0,1 @@

'use strict';
import { formats } from './formats';

@@ -4,0 +2,0 @@ import states from './generated/states';

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -11,5 +9,8 @@

expect(result.format).toBe('FRENCH_DRIVING_LICENSE');
expect(result.valid).toBe(true);
expect(result.details.filter((a) => !a.valid)).toHaveLength(0);
expect(result).toMatchObject({
format: 'FRENCH_DRIVING_LICENSE',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -24,2 +25,4 @@ documentCode: 'D1',

});
expect(result.details.filter((a) => !a.valid)).toHaveLength(0);
});

@@ -26,0 +29,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -13,5 +11,9 @@

const result = parse(MRZ);
expect(result.format).toBe('FRENCH_NATIONAL_ID');
// expect(result.valid).toStrictEqual(true);
expect(result.details.filter((a) => !a.valid)).toHaveLength(0);
expect(result).toMatchObject({
format: 'FRENCH_NATIONAL_ID',
valid: true,
documentNumber: '1710GVA12345',
});
expect(result.fields).toStrictEqual({

@@ -32,3 +34,39 @@ documentCode: 'ID',

});
expect(result.details.filter((a) => !a.valid)).toHaveLength(0);
});
it('invalid MRZ', () => {
const MRZ = [
'IDFRATEST<NAME<<<<<<<<<<<<<<<<0CHE02',
'1710GV?123451ROBERTA<<<<<<<9112311F2',
];
const result = parse(MRZ);
expect(result).toMatchObject({
format: 'FRENCH_NATIONAL_ID',
valid: false,
documentNumber: null,
});
expect(result.fields).toStrictEqual({
documentCode: 'ID',
issuingState: 'FRA',
lastName: 'TEST NAME',
administrativeCode: '0CHE02',
issueDate: '1710',
administrativeCode2: null,
documentNumber: '12345',
documentNumberCheckDigit: null,
firstName: 'ROBERTA',
birthDate: '911231',
birthDateCheckDigit: '1',
sex: 'female',
compositeCheckDigit: null,
});
expect(result.details.filter((a) => !a.valid)).toHaveLength(3);
});
it('Use autocorrect', () => {

@@ -39,2 +77,5 @@ const MRZ = [

];
const reference = parse(MRZ);
const falseMRZ = [

@@ -45,6 +86,5 @@ '1DFRATE5T<NAME<<<<<<<<<<<<<<<<0CHE02',

const result = parse(MRZ);
const correctedResult = parse(falseMRZ, { autocorrect: true });
expect(correctedResult.fields).toStrictEqual(reference.fields);
expect(result.fields).toStrictEqual(correctedResult.fields);
expect(

@@ -51,0 +91,0 @@ correctedResult.details.map(({ autocorrect }) => autocorrect),

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -14,4 +12,21 @@

const result = parse(MRZ);
expect(result.format).toBe('SWISS_DRIVING_LICENSE');
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'SWISS_DRIVING_LICENSE',
valid: true,
documentNumber: '305142128097',
});
expect(result.fields).toStrictEqual({
documentNumber: 'AAA001D',
languageCode: 'D',
documentCode: 'FA',
issuingState: 'CHE',
pinCode: '305142128',
versionNumber: '097',
birthDate: '800126',
firstName: 'FABIENNE',
lastName: 'MARCHAND',
});
expect(result.details.filter((a) => !a.valid)).toHaveLength(0);

@@ -47,2 +62,19 @@ expect(result.details[0]).toStrictEqual({

});
});
it('invalid text', () => {
const MRZ = [
'AAA001D<<',
'FACHE305142128?97<<800126<<<<<',
'M4RCHAND<<FABI3NNE<<<<<<<<<<<<',
];
const result = parse(MRZ);
expect(result).toMatchObject({
format: 'SWISS_DRIVING_LICENSE',
valid: false,
documentNumber: null,
});
expect(result.fields).toStrictEqual({

@@ -54,19 +86,9 @@ documentNumber: 'AAA001D',

pinCode: '305142128',
versionNumber: '097',
versionNumber: null,
birthDate: '800126',
firstName: 'FABIENNE',
lastName: 'MARCHAND',
firstName: null,
lastName: null,
});
});
it('invalid text', () => {
const MRZ = [
'AAA001D<<',
'FACHE305142128097<<800126<<<<<',
'M4RCHAND<<FABI3NNE<<<<<<<<<<<<',
];
const result = parse(MRZ);
expect(result.format).toBe('SWISS_DRIVING_LICENSE');
expect(result.valid).toBe(false);
expect(result.details.filter((a) => !a.valid)).toHaveLength(2);
expect(result.details.filter((a) => !a.valid)).toHaveLength(3);
expect(result.details[0]).toStrictEqual({

@@ -111,13 +133,2 @@ label: 'Document number',

});
expect(result.fields).toStrictEqual({
documentNumber: 'AAA001D',
languageCode: 'D',
documentCode: 'FA',
issuingState: 'CHE',
pinCode: '305142128',
versionNumber: '097',
birthDate: '800126',
firstName: null,
lastName: null,
});
});

@@ -130,2 +141,5 @@ it('Use autocorrect', () => {

];
const reference = parse(MRZ);
const falseMRZ = [

@@ -137,6 +151,5 @@ 'AAA001D<<',

const result = parse(MRZ);
const correctedResult = parse(falseMRZ, { autocorrect: true });
expect(result.fields).toStrictEqual(correctedResult.fields);
expect(correctedResult.fields).toStrictEqual(reference.fields);
expect(

@@ -143,0 +156,0 @@ correctedResult.details.map(({ autocorrect }) => autocorrect),

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -7,3 +5,3 @@

it('swiss ID - valid', () => {
const data = [
const MRZ = [
'IDCHEA1234567<6<<<<<<<<<<<<<<<',

@@ -14,7 +12,10 @@ '7510256M2009018CHE<<<<<<<<<<<8',

const result = parse(data);
const result = parse(MRZ);
expect(result).toMatchObject({
format: 'TD1',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -57,3 +58,9 @@ documentCode: 'ID',

const result = parse(MRZ);
expect(result.details.filter((a) => !a.valid)).toHaveLength(2);
expect(result).toMatchObject({
format: 'TD1',
valid: false,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -76,3 +83,4 @@ firstName: 'ANNA MARIA',

});
expect(result.valid).toBe(false);
expect(result.details.filter((a) => !a.valid)).toHaveLength(2);
expect(result.details.find((a) => a.field === 'issuingState')?.valid).toBe(

@@ -105,4 +113,11 @@ false,

];
const result = parse(MRZ);
expect(result.valid).toBe(false);
expect(result).toMatchObject({
format: 'TD1',
valid: false,
documentNumber: result.fields.documentNumber,
});
expect(result.details.filter((f) => !f.valid)).toHaveLength(2);

@@ -149,8 +164,15 @@ const documentNumberDetails = result.details.find(

const result = parse(MRZ);
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'TD1',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields.lastName).toBe('');
expect(result.fields.firstName).toBe('ANNA MARIA');
});
it('Use autocorrection', () => {
const data = [
const MRZ = [
'IDCHEA1234567<6<<<<<<<<<<<<<<<',

@@ -161,3 +183,5 @@ '7510256M2009018CHE<<<<<<<<<<<8',

const falseData = [
const reference = parse(MRZ);
const falseMRZ = [
'IDCHEA1234567<6<<<<<<<<<<<<<<<',

@@ -168,5 +192,6 @@ '7SIOZSGMZOO90IBCHE<<<<<<<<<<<B',

const result = parse(data);
const correctedResult = parse(falseData, { autocorrect: true });
expect(result.fields).toStrictEqual(correctedResult.fields);
const correctedResult = parse(falseMRZ, { autocorrect: true });
expect(correctedResult.fields).toStrictEqual(reference.fields);
expect(

@@ -173,0 +198,0 @@ correctedResult.details.map(({ autocorrect }) => autocorrect),

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -13,8 +11,9 @@

const result = parse(MRZ);
const failed = result.details.filter((a) => !a.valid);
expect(result).toMatchObject({
format: 'TD2',
valid: false,
documentNumber: result.fields.documentNumber,
});
expect(failed).toHaveLength(2);
expect(result.fields).toStrictEqual({

@@ -36,4 +35,7 @@ firstName: 'ANNA MARIA',

});
expect(result.valid).toBe(false);
const failed = result.details.filter((a) => !a.valid);
expect(failed).toHaveLength(2);
});
it('Use autocorrect', () => {

@@ -44,2 +46,5 @@ const MRZ = [

];
const reference = parse(MRZ);
const falseMRZ = [

@@ -50,6 +55,6 @@ 'I<UTOERIK55ON<<ANNA<MAR1A<<<<<<<<<<<',

const result = parse(MRZ);
const correctedResult = parse(falseMRZ, { autocorrect: true });
expect(result.fields).toStrictEqual(correctedResult.fields);
expect(correctedResult.fields).toStrictEqual(reference.fields);
expect(

@@ -56,0 +61,0 @@ correctedResult.details.map(({ autocorrect }) => autocorrect),

@@ -1,3 +0,1 @@

'use strict';
import parse from '../parse';

@@ -13,9 +11,9 @@

const result = parse(MRZ);
expect(result).toMatchObject({
format: 'TD3',
valid: false,
format: 'TD3',
documentNumber: result.fields.documentNumber,
});
expect(result.valid).toBe(false);
const errors = result.details.filter((a) => !a.valid);
expect(errors).toHaveLength(2);
expect(result.fields).toStrictEqual({

@@ -39,2 +37,5 @@ documentCode: 'P',

const errors = result.details.filter((a) => !a.valid);
expect(errors).toHaveLength(2);
const personalNumberDetails = result.details.find(

@@ -76,3 +77,9 @@ (d) => d.field === 'personalNumber',

const result = parse(MRZ);
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'TD3',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -102,4 +109,11 @@ documentCode: 'P',

];
const result = parse(MRZ);
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'TD3',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -130,5 +144,11 @@ documentCode: 'P',

];
const result = parse(MRZ);
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'TD3',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -159,4 +179,11 @@ documentCode: 'PO',

];
const result = parse(MRZ);
expect(result.valid).toBe(true);
expect(result).toMatchObject({
format: 'TD3',
valid: true,
documentNumber: result.fields.documentNumber,
});
expect(result.fields).toStrictEqual({

@@ -186,2 +213,5 @@ documentCode: 'PT',

];
const reference = parse(MRZ);
const falseMRZ = [

@@ -192,6 +222,6 @@ 'P<UT0ERIK55ON<<ANNA<MAR1A<<<<<<<<<<<<<<<<<<<',

const result = parse(MRZ);
const correctedResult = parse(falseMRZ, { autocorrect: true });
expect(result.fields).toStrictEqual(correctedResult.fields);
expect(correctedResult.fields).toStrictEqual(reference.fields);
expect(

@@ -198,0 +228,0 @@ correctedResult.details.map(({ autocorrect }) => autocorrect),

@@ -1,3 +0,1 @@

'use strict';
import { Autocorrect } from '../types';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export function checkLines(lines: string | string[]) {

@@ -4,0 +2,0 @@ if (typeof lines === 'string') {

@@ -1,3 +0,1 @@

'use strict';
import { ParseTextError } from '../parsers/parseText';

@@ -4,0 +2,0 @@ import { Autocorrect, Details, FieldName, Range } from '../types';

@@ -1,3 +0,1 @@

'use strict';
import parseCompositeCheckDigit from '../parsers/parseCompositeCheckDigit';

@@ -4,0 +2,0 @@ import parseDate from '../parsers/parseDate';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/frenchDrivingLicence/parseDocumentCode';

@@ -4,0 +2,0 @@ import { parseAlpha } from '../parsers/parseAlpha';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseAlpha } from '../parsers/parseAlpha';

@@ -4,0 +2,0 @@ import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -1,3 +0,1 @@

'use strict';
import { FormatType } from '../formats';

@@ -7,2 +5,3 @@ import { Autocorrect, Details, FieldRecords, ParseResult } from '../types';

import { CreateFieldParserResult } from './createFieldParser';
import { getDocumentNumber } from './getDocumentNumber';
import { ParseMRZOptions } from './parse';

@@ -77,4 +76,5 @@

fields: fields.fields,
documentNumber: getDocumentNumber(format, fields.fields),
valid: fields.allValid,
};
}

@@ -1,2 +0,2 @@

'use strict';
import { ParseResult } from '../types';

@@ -9,6 +9,7 @@ import { checkLines } from './checkLines';

}
function parseMRZ(
inputLines: string | string[],
options: ParseMRZOptions = {},
) {
): ParseResult {
const lines = checkLines(inputLines);

@@ -15,0 +16,0 @@ switch (lines.length) {

@@ -1,3 +0,1 @@

'use strict';
import parseFrenchDrivingLicense from './frenchDrivingLicence';

@@ -4,0 +2,0 @@ import parseFrenchNationalId from './frenchNationalId';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseNumber } from '../parsers/parseNumber';

@@ -4,0 +2,0 @@ import { checkSeparator } from '../parsers/swissDrivingLicense/checkSeparator';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -4,0 +2,0 @@ import { parseDocumentNumberOptional } from '../parsers/parseDocumentNumberOptional';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodeId';

@@ -4,0 +2,0 @@ import { parseOptional } from '../parsers/parseOptional';

@@ -1,3 +0,1 @@

'use strict';
import { formats } from '../formats';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import parseDocumentCode from '../parsers/parseDocumentCodePassport';

@@ -4,0 +2,0 @@ import { parsePersonalNumber } from '../parsers/parsePersonalNumber';

@@ -1,3 +0,1 @@

'use strict';
import { check } from '../check';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export function check(string: string, value: string | number) {

@@ -4,0 +2,0 @@ let code = 0;

@@ -1,5 +0,3 @@

'use strict';
export function cleanText(string: string) {
return string.replace(/<+$/g, '').replace(/</g, ' ');
}

@@ -1,3 +0,1 @@

'use strict';
/**

@@ -4,0 +2,0 @@ * D1 seems to be the most common,

@@ -1,3 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { check } from './check';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export default function parseDate(value: string) {

@@ -4,0 +2,0 @@ if (!value.match(/^[0-9<]{4,6}$/)) {

@@ -1,3 +0,1 @@

'use strict';
import { check } from './check';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export default function parseDocumentCodeId(source: string) {

@@ -4,0 +2,0 @@ const first = source.charAt(0);

@@ -1,3 +0,1 @@

'use strict';
export default function parseDocumentCodePassport(source: string) {

@@ -4,0 +2,0 @@ const first = source.charAt(0);

@@ -1,3 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { check } from './check';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export function parseNumber(source: string) {

@@ -4,0 +2,0 @@ if (!source.match(/^[0-9]+$/)) {

@@ -1,3 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { parseText } from './parseText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { check } from './check';

@@ -4,0 +2,0 @@ import { cleanText } from './cleanText';

@@ -1,3 +0,1 @@

'use strict';
export default function parseSex(source: string) {

@@ -4,0 +2,0 @@ switch (source) {

@@ -1,3 +0,1 @@

'use strict';
import STATES from '../generated/states';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
import { cleanText } from './cleanText';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export function checkSeparator(source: string) {

@@ -4,0 +2,0 @@ if (!source.match(/^<*$/)) {

@@ -1,3 +0,1 @@

'use strict';
export default function parseDocumentCode(source: string) {

@@ -4,0 +2,0 @@ if (source !== 'FA') {

@@ -1,3 +0,1 @@

'use strict';
import parseLanguageCode from './parseLanguageCode';

@@ -4,0 +2,0 @@

@@ -1,3 +0,1 @@

'use strict';
export default function parseIssuingState(source: string) {

@@ -4,0 +2,0 @@ if (source !== 'CHE' && source !== 'LIE') {

@@ -1,3 +0,1 @@

'use strict';
export default function parseLanguageCode(languageCode: string) {

@@ -4,0 +2,0 @@ switch (languageCode) {

@@ -1,3 +0,1 @@

'use strict';
export interface Autocorrect {

@@ -33,2 +31,3 @@ line: number;

fields: FieldRecords;
documentNumber: string | null;
details: Details[];

@@ -35,0 +34,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc