@krlwlfrt/xsdco
Version:
XSD converter
158 lines • 14.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateObjectValue = generateObjectValue;
exports.generateXml = generateXml;
const tsg_1 = require("@krlwlfrt/tsg");
const moment_1 = __importDefault(require("moment"));
const pad_1 = __importDefault(require("pad"));
const randexp_1 = __importDefault(require("randexp"));
const common_1 = require("./common");
const faker = require('faker');
function generateValue(property, typeMap) {
let value;
if (typeof property.type.namespace === 'string' && !['xs', 'xsd'].includes(property.type.namespace) && property.type.name in typeMap) {
if ((0, tsg_1.isEntity)(typeMap[property.type.name])) {
if (typeof property.multiple !== 'undefined' && property.multiple) {
value = [];
for (let i = 0; i < faker.random.number({ min: 2, max: 4 }); i++) {
value.push(generateObjectValue(typeMap[property.type.name], typeMap));
}
}
else {
value = generateObjectValue(typeMap[property.type.name], typeMap);
}
}
else {
value = generateValue(typeMap[property.type.name], typeMap);
}
}
else if (property.type.name === 'date') {
value = (0, moment_1.default)(faker.random.date)
.format('YYYY-MM-DD');
}
else if (property.type.name === 'decimal') {
let totalDigits = 5;
let fractionDigits = 0;
if (Array.isArray(property.attributes)) {
for (const attribute of property.attributes) {
if (attribute.name === 'totalDigits') {
totalDigits = parseInt(attribute.value.toString(), 10);
}
if (attribute.name === 'fractionDigits') {
fractionDigits = parseInt(attribute.value.toString(), 10);
}
}
}
if (fractionDigits > 0) {
value = `${faker.random.number(Math.pow(10, totalDigits - fractionDigits))}.${faker.random.number(Math.pow(10, fractionDigits))}`;
}
else {
value = faker.random.number(Math.pow(10, totalDigits - fractionDigits));
}
}
else if (['short', 'unsignedByte'].includes(property.type.name)) {
value = faker.random.number(255);
}
else if (property.type.name === 'int') {
value = faker.random.number(Number.MAX_SAFE_INTEGER);
}
else if (property.type.name === 'string') {
value = faker.random.word();
let pattern = '';
let maxLength = -1;
if (Array.isArray(property.attributes)) {
for (const attribute of property.attributes) {
if (attribute.name === 'maxLength') {
maxLength = parseInt(attribute.value.toString(), 10);
}
if (attribute.name === 'pattern') {
pattern = attribute.value.toString();
}
}
}
if (pattern.length > 0) {
if (pattern === '\\d+') {
value = faker.random.number(Number.MAX_SAFE_INTEGER);
}
else if (['....-..-..', '\\d\\d\\d\\d-\\d\\d-\\d\\d'].includes(pattern)) {
value = (0, moment_1.default)(faker.random.date)
.format('YYYY-MM-DD');
}
else if (pattern === '\\d*') {
value = (0, pad_1.default)(100, faker.random.number(), '0');
if (maxLength >= 0) {
value = value
.toString()
.substr(value.toString.length - 1 - maxLength);
}
}
else {
common_1.logger.info(`Pattern ${pattern} is unknown!`);
value = (new randexp_1.default(new RegExp(pattern))).gen();
}
}
if (maxLength >= 0 && typeof value !== 'undefined') {
value = value
.toString()
.substr(0, maxLength);
}
}
if (typeof value === 'undefined') {
common_1.logger.info(`No mapping for ${property.name} with type ${property.type.name}`);
value = faker.random.alphaNumeric(100);
}
if (typeof property.multiple !== 'undefined' && property.multiple && !Array.isArray(value)) {
value = [value];
}
return value;
}
function generateObjectValue(entity, typeMap) {
const obj = {};
obj.$$name = entity.name;
for (const property of entity.properties) {
obj[property.name] = generateValue(property, typeMap);
}
return obj;
}
function generateXml(object, includeHead = true, recursionDepth = 0) {
let output = '';
if (includeHead) {
output = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
output += `<${object.$$name}`;
for (const key in object) {
if (!{}.hasOwnProperty.call(object, key) || key.indexOf('$') !== 0 || key === '$$name') {
continue;
}
output += ` ${key.substring(1)}="${object[key]}"`;
}
output += '>\n';
}
for (const key in object) {
if (!{}.hasOwnProperty.call(object, key) || key.indexOf('$') === 0) {
continue;
}
if (Array.isArray(object[key])) {
for (const item of object[key]) {
output += `<${key}>\n`;
output += generateXml(item, false, recursionDepth + 1);
output += `</${key}>\n`;
}
}
else if (typeof object[key] === 'object') {
output += `<${key}>\n`;
output += generateXml(object[key], false, recursionDepth + 1);
output += `</${key}>\n`;
}
else {
output += `<${key}>${object[key].toString()}</${key}>\n`;
}
}
if (includeHead) {
output += `</${object.$$name}>`;
}
return output;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE2SUEsa0RBVUM7QUFVRCxrQ0EyQ0M7QUE3TEQsdUNBQXlEO0FBQ3pELG9EQUE0QjtBQUM1Qiw4Q0FBc0I7QUFDdEIsc0RBQThCO0FBQzlCLHFDQUF5QztBQUt6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFTL0IsU0FBUyxhQUFhLENBQUMsUUFBa0IsRUFBRSxPQUFnQjtJQUN6RCxJQUFJLEtBQUssQ0FBQztJQUVWLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNySSxJQUFJLElBQUEsY0FBUSxFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLE9BQU8sUUFBUSxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsRSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUVYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDL0QsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVcsRUFBRSxP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