@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
JavaScript
;
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