@mojaloop/ml-schema-transformer-lib
Version:
Shared component for ML schemas translation
216 lines (209 loc) • 7.75 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/lib/createTransformer.ts
var createTransformer_exports = {};
__export(createTransformer_exports, {
createTransformer: () => createTransformer
});
module.exports = __toCommonJS(createTransformer_exports);
// src/lib/transformer.ts
var Transformer = class {
mapper;
constructor(mapper) {
this.mapper = mapper;
}
async transform(source, { mapperOptions } = {}) {
return this.mapper(source, mapperOptions);
}
};
// src/lib/utils/index.ts
var ilpPacket = __toESM(require("ilp-packet"));
// src/types/index.ts
var logLevelsMap = {
error: "error",
warn: "warn",
info: "info",
verbose: "verbose",
debug: "debug",
silly: "silly",
audit: "audit",
trace: "trace",
perf: "perf"
};
var logLevelValues = Object.values(logLevelsMap);
// src/lib/utils/index.ts
var idGenerator = require("@mojaloop/central-services-shared").Util.id;
var { CreateFSPIOPErrorFromErrorCode } = require("@mojaloop/central-services-error-handling");
var fspiopToIsoTransferStateMap = {
COMMITTED: "COMM",
RESERVED: "RESV",
RECEIVED: "RECV",
ABORTED: "ABOR"
};
var generateID = (idGenType = "ulid" /* ulid */, config = {}) => {
switch (idGenType) {
case "ulid" /* ulid */:
case "uuid" /* uuid */:
return idGenerator({ ...config, type: idGenType })();
default:
return idGenerator({ ...config, type: "ulid" /* ulid */ })();
}
};
var isPersonPartyIdType = (partyIdType) => partyIdType && !["BUSINESS", "ALIAS", "DEVICE"].includes(partyIdType);
var isEmptyObject = (data) => {
return typeof data === "object" && data !== null && Object.keys(data).length === 0;
};
var getDescrForErrCode = (code) => {
try {
const errorCode = Number.parseInt(code);
const errorCreated = CreateFSPIOPErrorFromErrorCode(errorCode);
return errorCreated?.apiErrorCode?.type?.description;
} catch (error) {
return "Unknown error";
}
};
var getIlpPacketCondition = (inputIlpPacket) => {
const binaryPacket = Buffer.from(inputIlpPacket, "base64");
const decoded = ilpPacket.deserializeIlpPrepare(binaryPacket);
return decoded?.executionCondition?.toString("base64url");
};
var toIsoTransferState = (fspiopState) => {
if (!fspiopState) return void 0;
const isoState = fspiopToIsoTransferStateMap[fspiopState];
if (!isoState) throw new Error(`toIsoTransferState: Unknown FSPIOP transfer state: ${fspiopState}`);
return isoState;
};
var toFspiopTransferState = (isoState) => {
if (!isoState) return void 0;
for (const [key, value] of Object.entries(fspiopToIsoTransferStateMap)) {
if (value === isoState) return key;
}
throw new Error(`toFspiopTransferState: Unknown ISO20022 transfer state: ${isoState}`);
};
var getFirstFromDelimitedName = (name) => {
if (!name) return void 0;
const parts = name.split(";");
return parts[0]?.trim() || void 0;
};
var getMiddleFromDelimitedName = (name) => {
if (!name) return void 0;
const parts = name.split(";");
return parts[1]?.trim() || void 0;
};
var getLastFromDelimitedName = (name) => {
if (!name) return void 0;
const parts = name.split(";");
return parts[2]?.trim() || void 0;
};
var getDisplayNameFromDelimitedName = (name) => {
if (!name) return void 0;
const parts = name.split(";");
return parts[3]?.trim() || void 0;
};
var makeDelimitedName = (party) => {
const first = party?.personalInfo?.complexName?.firstName || void 0;
const second = party?.personalInfo?.complexName?.middleName || void 0;
const third = party?.personalInfo?.complexName?.lastName || void 0;
const displayName = party?.name || void 0;
if (!first && !second && !third && !displayName) return void 0;
const parts = [first, second, third, displayName];
return parts.join(";");
};
// src/lib/transforms/index.ts
var CustomTransforms = {
generateID: (options) => () => (data, state) => {
return generateID();
},
datetimeNow: (options) => () => (data, state) => {
return (/* @__PURE__ */ new Date()).toISOString();
},
isPersonParty: (options) => () => (data, state) => {
return isPersonPartyIdType(data);
},
isNotPersonParty: (options) => () => (data, state) => {
return !isPersonPartyIdType(data);
},
isNotEmpty: (options) => () => (data, state) => {
return data && !isEmptyObject(data);
},
fspiopErrorDescrForCode: (options) => () => (data, state) => {
return getDescrForErrCode(data);
},
ilpPacketToCondition: (options) => () => (data, state) => {
return getIlpPacketCondition(data);
},
toFspiopTransferState: (options) => () => (data, state) => {
return toFspiopTransferState(data);
},
toIsoTransferState: (options) => () => (data, state) => {
return toIsoTransferState(data);
},
toIsoErrorDescription: (options) => () => (data, state) => {
const dataStr = data;
return dataStr.length > 105 ? dataStr.substring(0, 105) : dataStr;
},
supportedCurrenciesToString: (options) => () => (data, state) => {
return data && Array.isArray(data) && data.length > 0 ? data[0] : data;
},
toArray: (options) => () => (data, state) => {
if (data) {
return Array.isArray(data) ? data : [data];
}
return void 0;
},
getFirstFromDelimitedName: (options) => () => (data, state) => {
return getFirstFromDelimitedName(data);
},
getMiddleFromDelimitedName: (options) => () => (data, state) => {
return getMiddleFromDelimitedName(data);
},
getLastFromDelimitedName: (options) => () => (data, state) => {
return getLastFromDelimitedName(data);
},
getDisplayNameFromDelimitedName: (options) => () => (data, state) => {
return getDisplayNameFromDelimitedName(data);
},
makeDelimitedName: (options) => () => (data, state) => {
const party = data;
return makeDelimitedName(party);
}
};
// src/lib/createTransformer.ts
var mapTransform = require("map-transform-cjs").default;
var createTransformer = (mapping, options = {}) => {
const { mapTransformOptions } = options;
const mergedOptions = { ...mapTransformOptions, transformers: { ...mapTransformOptions?.transformers, ...CustomTransforms } };
mapping = typeof mapping === "string" ? JSON.parse(mapping) : mapping;
return new Transformer(mapTransform(mapping, mergedOptions));
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createTransformer
});
//# sourceMappingURL=createTransformer.js.map