emvco-qr-sdk
Version:
A robust TypeScript SDK for decoding, validating, and processing EMVCo-compliant QR codes used in digital payment systems.
31 lines (30 loc) • 1.6 kB
JavaScript
;
/**
* Provides handler functions for different QR parsing modes.
* Each handler converts TLV entities into a structure based on the selected strategy.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNamedHandler = exports.PARSE_MODE_HANDLERS = void 0;
const qr_parse_mode_enum_1 = require("../../domain/enums/qr-parse-mode.enum");
const named_fields_mapper_1 = require("../mappers/named-fields.mapper");
const tlv_util_1 = require("../utils/resolvers/tlv.util");
const raw_object_mapper_service_1 = require("./raw-object-mapper.service");
/**
* Map of handlers used to convert parsed TLVs into objects based on the QR parsing mode.
*/
exports.PARSE_MODE_HANDLERS = {
[qr_parse_mode_enum_1.QRParseMode.TLV]: (tlvs) => tlvs,
[qr_parse_mode_enum_1.QRParseMode.RAW_OBJECT]: (tlvs) => raw_object_mapper_service_1.RawObjectMapperService.map(tlvs),
[qr_parse_mode_enum_1.QRParseMode.GLOBAL]: (tlvs) => named_fields_mapper_1.NamedFieldsMapper.map(tlvs, tlv_util_1.TLVUtil.getStandardName),
[qr_parse_mode_enum_1.QRParseMode.CO]: (tlvs) => named_fields_mapper_1.NamedFieldsMapper.map(tlvs, tlv_util_1.TLVUtil.getColombianName, tlv_util_1.TLVUtil.getColombianSubtagName),
};
/**
* Returns the appropriate handler for mapping TLVs using named fields, restricted to GLOBAL or CO.
*
* @param mode - The QR parse mode to use (must be GLOBAL or CO).
* @returns A function that maps TLVs to named key/value objects.
*/
const getNamedHandler = (mode) => {
return exports.PARSE_MODE_HANDLERS[mode];
};
exports.getNamedHandler = getNamedHandler;