UNPKG

@kodeglot/node-python-eid-reader

Version:

A cross-platform Node.js package to read Belgian eID card public data using Python eidreader with automatic dependency checking

67 lines 2.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PcscDetector = void 0; const pcsclite_1 = __importDefault(require("pcsclite")); const events_1 = require("events"); class PcscDetector extends events_1.EventEmitter { constructor() { super(); this.readers = new Map(); this.pcsc = (0, pcsclite_1.default)(); this.setup(); } setup() { this.pcsc.on('reader', (reader) => { const status = { name: reader.name, cardPresent: false }; this.readers.set(reader.name, status); this.emit('reader-connected', status); reader.on('status', (statusObj) => { const changes = reader.state ^ statusObj.state; const readerStatus = this.readers.get(reader.name); if (!readerStatus) return; // Reader was removed or detector closed if (changes) { if ((changes & reader.SCARD_STATE_PRESENT) && (statusObj.state & reader.SCARD_STATE_PRESENT)) { // Card inserted readerStatus.cardPresent = true; this.emit('card-inserted', { name: reader.name }); } else if ((changes & reader.SCARD_STATE_EMPTY) && (statusObj.state & reader.SCARD_STATE_EMPTY)) { // Card removed readerStatus.cardPresent = false; this.emit('card-removed', { name: reader.name }); } } }); reader.on('end', () => { this.readers.delete(reader.name); this.emit('reader-removed', { name: reader.name }); }); }); this.pcsc.on('error', (err) => { this.emit('error', err); }); } getStatus() { return { readers: Array.from(this.readers.values()), }; } close() { this.pcsc.close(); this.readers.clear(); } } exports.PcscDetector = PcscDetector; // Example usage (uncomment to test standalone): // const detector = new PcscDetector(); // detector.on('reader-connected', (r) => console.log('Reader connected:', r)); // detector.on('reader-removed', (r) => console.log('Reader removed:', r)); // detector.on('card-inserted', (r) => console.log('Card inserted:', r)); // detector.on('card-removed', (r) => console.log('Card removed:', r)); // detector.on('error', (e) => console.error('PCSC error:', e)); // setInterval(() => console.log('Status:', detector.getStatus()), 5000); //# sourceMappingURL=pcsc-detect.js.map