UNPKG

bankcode-bic

Version:

Convert bank codes from IBAN to BICs, Name of bank. Currently supports only some selected EU countries.

61 lines (59 loc) 1.48 kB
import { getField } from "../download/download.js"; //#region src/libs/pack-data.ts function packData(data, keyNames, fieldNames) { const dataFormat = [ "flat", "keyed", "serialized" ][Math.min(keyNames.length, 2)]; let outputObject; switch (dataFormat) { case "keyed": { const onlyOneField = fieldNames.length === 1; outputObject = { type: "keyed", key: keyNames[0], fields: fieldNames, banks: data.reduce((acc, row) => { const key = getField(keyNames[0], row); acc[key] = onlyOneField ? getField(fieldNames[0], row) : getFields(fieldNames, row); return acc; }, {}) }; break; } case "serialized": { const keysData = keyNames.reduce((acc, key) => { acc[key] = {}; return acc; }, {}); const banks = Array.from({ length: data.length }); let index = 0; for (const row of data) { for (const keyName of keyNames) { if (!keysData[keyName]) keysData[keyName] = {}; keysData[keyName][getField(keyName, row)] = index; } banks[index++] = getFields(fieldNames, row); } outputObject = { type: "serialized", keys: keysData, fields: fieldNames, banks }; break; } default: outputObject = { type: "flat", fields: fieldNames, banks: data.map((row) => getFields(fieldNames, row)) }; } return outputObject; } function getFields(fieldNames, row) { return fieldNames.map((field) => getField(field, row)); } //#endregion export { packData };