Socket
Socket
Sign inDemoInstall

mybatis-mapper-myyrakle

Package Overview
Dependencies
4
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.6.6 to 0.6.7

535

lib/convert.js

@@ -1,98 +0,99 @@

var convertChildren = function(children, param, namespace, myBatisMapper) {
var convertChildren = function (children, param, namespace, myBatisMapper) {
if (param == null) {
param = {};
}
if (!isDict(param)){
if (!isDict(param)) {
throw new Error("Parameter argument should be Key-Value type or Null.");
}
if (children.type == 'text') {
if (children.type == "text") {
// Convert Parameters
return convertParameters(children, param);
} else if (children.type == 'tag') {
} else if (children.type == "tag") {
switch (children.name.toLowerCase()) {
case 'if':
return convertIf(children, param, namespace, myBatisMapper);
break;
case 'choose':
return convertChoose(children, param, namespace, myBatisMapper);
break;
case 'trim':
case 'where':
return convertTrimWhere(children, param, namespace, myBatisMapper);
break;
case 'set':
return convertSet(children, param, namespace, myBatisMapper);
break;
case 'foreach':
return convertForeach(children, param, namespace, myBatisMapper);
break;
case 'bind':
param = convertBind(children, param);
return '';
break;
case 'include':
return convertInclude(children, param, namespace, myBatisMapper);
default:
throw new Error("XML is not well-formed character or markup. Consider using CDATA section.");
break;
case "if":
return convertIf(children, param, namespace, myBatisMapper);
break;
case "choose":
return convertChoose(children, param, namespace, myBatisMapper);
break;
case "trim":
case "where":
return convertTrimWhere(children, param, namespace, myBatisMapper);
break;
case "set":
return convertSet(children, param, namespace, myBatisMapper);
break;
case "foreach":
return convertForeach(children, param, namespace, myBatisMapper);
break;
case "bind":
param = convertBind(children, param);
return "";
break;
case "include":
return convertInclude(children, param, namespace, myBatisMapper);
default:
throw new Error(
"XML is not well-formed character or markup. Consider using CDATA section."
);
break;
}
} else {
return '';
return "";
}
}
};
var convertParameters = function(children, param) {
var convertParameters = function (children, param) {
var convertString = children.content;
try{
convertString = convertParametersInner('#', convertString, param);
convertString = convertParametersInner('$', convertString, param);
try {
convertString = convertParametersInner("#", convertString, param);
convertString = convertParametersInner("$", convertString, param);
} catch (err) {
throw new Error("Error occurred during convert parameters.");
}
try{
try {
// convert CDATA string
convertString = convertString.replace(/(\&amp\;)/g,'&');
convertString = convertString.replace(/(\&lt\;)/g,'<');
convertString = convertString.replace(/(\&gt\;)/g,'>');
convertString = convertString.replace(/(\&quot\;)/g,'"');
convertString = convertString.replace(/(\&amp\;)/g, "&");
convertString = convertString.replace(/(\&lt\;)/g, "<");
convertString = convertString.replace(/(\&gt\;)/g, ">");
convertString = convertString.replace(/(\&quot\;)/g, '"');
} catch (err) {
throw new Error("Error occurred during convert CDATA section.");
}
return convertString;
}
};
var isObject = function (variable) {
return typeof variable === 'object' && variable !== null;
}
return typeof variable === "object" && variable !== null;
};
var isArray = function (variable) {
return isObject(variable) && variable.hasOwnProperty('length');
}
return isObject(variable) && variable.hasOwnProperty("length");
};
var convertParametersInner = function(change, convertString, param) {
var stringReg = new RegExp('(\\' + change + '\\{[a-zA-Z0-9._\\$]+\\})', 'g');
var convertParametersInner = function (change, convertString, param) {
var stringReg = new RegExp("(\\" + change + "\\{[a-zA-Z0-9._\\$]+\\})", "g");
var stringTarget = convertString.match(stringReg);
if (stringTarget != null && stringTarget.length > 0){
if (stringTarget != null && stringTarget.length > 0) {
stringTarget = uniqueArray(stringTarget);
var target = null;
for (var i=0; i<stringTarget.length; i++) {
for (var i = 0; i < stringTarget.length; i++) {
target = stringTarget[i];
var t = target.replace(change + '{', '').replace('}','');
var tempParamKey = eval('param.' + t);
if (tempParamKey !== undefined){
var reg = new RegExp('\\' + change + '{' + t + '}', 'g');
var t = target.replace(change + "{", "").replace("}", "");
var tempParamKey = eval("param." + t);
if (tempParamKey !== undefined) {
var reg = new RegExp("\\" + change + "{" + t + "}", "g");
if (tempParamKey === null) {
tempParamKey = 'NULL';
tempParamKey = "NULL";
convertString = convertString.replace(reg, tempParamKey);
} else {
if (change == '#') {
if (change == "#") {
// processing JSON fields structures

@@ -102,8 +103,14 @@ if (isObject(tempParamKey) || isArray(tempParamKey)) {

} else {
tempParamKey = tempParamKey.toString().replace(/"/g, '\\\"');
tempParamKey = tempParamKey.toString().replace(/"/g, '"');
// I think it dont need backslash.
// This is because it will be wrapped in single quotes anyway.
// And in the case of postgres, backslash escape is not valid.
}
tempParamKey = tempParamKey.replace(/'/g, '\'\'');
convertString = convertString.replace(reg, "'" + tempParamKey + "'");
} else if (change == '$') {
tempParamKey = tempParamKey.replace(/'/g, "''");
convertString = convertString.replace(
reg,
"'" + tempParamKey + "'"
);
} else if (change == "$") {
convertString = convertString.replace(reg, tempParamKey);

@@ -116,60 +123,77 @@ }

return convertString;
}
};
var convertIf = function(children, param, namespace, myBatisMapper) {
try{
var convertIf = function (children, param, namespace, myBatisMapper) {
try {
var evalString = children.attrs.test;
// Create Evaluate string
evalString = replaceEvalString(evalString, param);
evalString = evalString.replace(/ and /gi, ' && ');
evalString = evalString.replace(/ or /gi, ' || ');
evalString = evalString.replace(/ and /gi, " && ");
evalString = evalString.replace(/ or /gi, " || ");
// replace == to === for strict evaluate
evalString = evalString.replace(/==/g, "===");
evalString = evalString.replace(/!=/g, "!==");
} catch (err) {
throw new Error("Error occurred during convert <if> element.");
}
// Execute Evaluate string
try {
if (eval(evalString)) {
var convertString = '';
for (var i=0, nextChildren; nextChildren=children['children'][i]; i++){
convertString += convertChildren(nextChildren, param, namespace, myBatisMapper);
var convertString = "";
for (
var i = 0, nextChildren;
(nextChildren = children["children"][i]);
i++
) {
convertString += convertChildren(
nextChildren,
param,
namespace,
myBatisMapper
);
}
return convertString;
} else {
return '';
return "";
}
} catch (e) {
return '';
return "";
}
}
};
var convertForeach = function (children, param, namespace, myBatisMapper) {
try{
var collection = eval('param.' + children.attrs.collection);
try {
var collection = eval("param." + children.attrs.collection);
var item = children.attrs.item;
var open = (children.attrs.open == null)? '' : children.attrs.open;
var close = (children.attrs.close == null)? '' : children.attrs.close;
var separator = (children.attrs.separator == null)? '' : children.attrs.separator;
var open = children.attrs.open == null ? "" : children.attrs.open;
var close = children.attrs.close == null ? "" : children.attrs.close;
var separator =
children.attrs.separator == null ? "" : children.attrs.separator;
var foreachTexts = [];
var coll = null;
for (var j=0; j<collection.length; j++){
for (var j = 0; j < collection.length; j++) {
coll = collection[j];
var foreachParam = param;
foreachParam[item] = coll;
var foreachText = '';
for (var k=0, nextChildren; nextChildren=children.children[k]; k++){
var fText = convertChildren(nextChildren, foreachParam, namespace, myBatisMapper);
fText = fText.replace(/^\s*$/g, '');
if (fText != null && fText.length > 0){
var foreachText = "";
for (
var k = 0, nextChildren;
(nextChildren = children.children[k]);
k++
) {
var fText = convertChildren(
nextChildren,
foreachParam,
namespace,
myBatisMapper
);
fText = fText.replace(/^\s*$/g, "");
if (fText != null && fText.length > 0) {
foreachText += fText;

@@ -179,25 +203,28 @@ }

if (foreachText != null && foreachText.length > 0){
if (foreachText != null && foreachText.length > 0) {
foreachTexts.push(foreachText);
}
}
return (open + foreachTexts.join(separator) + close);
return open + foreachTexts.join(separator) + close;
} catch (err) {
throw new Error("Error occurred during convert <foreach> element.");
}
}
};
var convertChoose = function (children, param, namespace, myBatisMapper) {
try{
for (var i=0, whenChildren; whenChildren=children.children[i];i++){
if (whenChildren.type == 'tag' && whenChildren.name.toLowerCase() == 'when'){
try {
for (var i = 0, whenChildren; (whenChildren = children.children[i]); i++) {
if (
whenChildren.type == "tag" &&
whenChildren.name.toLowerCase() == "when"
) {
var evalString = whenChildren.attrs.test;
// Create Evaluate string
evalString = replaceEvalString(evalString, param);
evalString = evalString.replace(/ and /gi, ' && ');
evalString = evalString.replace(/ or /gi, ' || ');
evalString = evalString.replace(/ and /gi, " && ");
evalString = evalString.replace(/ or /gi, " || ");
// Execute Evaluate string

@@ -207,5 +234,14 @@ try {

// If <when> condition is true, do it.
var convertString = '';
for (var k=0, nextChildren; nextChildren=whenChildren.children[k]; k++){
convertString += convertChildren(nextChildren, param, namespace, myBatisMapper);
var convertString = "";
for (
var k = 0, nextChildren;
(nextChildren = whenChildren.children[k]);
k++
) {
convertString += convertChildren(
nextChildren,
param,
namespace,
myBatisMapper
);
}

@@ -219,7 +255,19 @@ return convertString;

}
} else if (whenChildren.type == 'tag' && whenChildren.name.toLowerCase() == 'otherwise') {
} else if (
whenChildren.type == "tag" &&
whenChildren.name.toLowerCase() == "otherwise"
) {
// If reached <otherwise> tag, do it.
var convertString = '';
for (var k=0, nextChildren; nextChildren=whenChildren.children[k]; k++){
convertString += convertChildren(nextChildren, param, namespace, myBatisMapper);
var convertString = "";
for (
var k = 0, nextChildren;
(nextChildren = whenChildren.children[k]);
k++
) {
convertString += convertChildren(
nextChildren,
param,
namespace,
myBatisMapper
);
}

@@ -229,90 +277,109 @@ return convertString;

}
// If there is no suitable when and otherwise, just return null.
return '';
return "";
} catch (err) {
throw new Error("Error occurred during convert <choose> element.");
}
}
};
var convertTrimWhere = function(children, param, namespace, myBatisMapper) {
var convertString = '';
var convertTrimWhere = function (children, param, namespace, myBatisMapper) {
var convertString = "";
var prefix = null;
var prefixOverrides = null;
var globalSet = null;
try{
try {
switch (children.name.toLowerCase()) {
case 'trim':
prefix = children.attrs.prefix;
prefixOverrides = children.attrs.prefixOverrides;
globalSet = 'g';
break;
case 'where':
prefix = 'WHERE';
prefixOverrides = 'and|or';
globalSet = 'gi';
break;
default:
throw new Error("Error occurred during convert <trim/where> element.");
break;
case "trim":
prefix = children.attrs.prefix;
prefixOverrides = children.attrs.prefixOverrides;
globalSet = "g";
break;
case "where":
prefix = "WHERE";
prefixOverrides = "and|or";
globalSet = "gi";
break;
default:
throw new Error("Error occurred during convert <trim/where> element.");
break;
}
// Convert children first.
for (var j=0, nextChildren; nextChildren=children.children[j]; j++){
convertString += convertChildren(nextChildren, param, namespace, myBatisMapper);
for (var j = 0, nextChildren; (nextChildren = children.children[j]); j++) {
convertString += convertChildren(
nextChildren,
param,
namespace,
myBatisMapper
);
}
// Remove prefixOverrides
var trimRegex = new RegExp('(^)([\\s]*?)(' + prefixOverrides + ')', globalSet);
convertString = convertString.replace(trimRegex, '');
if (children.name.toLowerCase() != 'trim'){
var trimRegex = new RegExp('(' + prefixOverrides + ')([\\s]*?)($)', globalSet);
convertString = convertString.replace(trimRegex, '');
}
var trimRegex = new RegExp(
"(^)([\\s]*?)(" + prefixOverrides + ")",
globalSet
);
convertString = convertString.replace(trimRegex, "");
if (children.name.toLowerCase() != "trim") {
var trimRegex = new RegExp(
"(" + prefixOverrides + ")([\\s]*?)($)",
globalSet
);
convertString = convertString.replace(trimRegex, "");
}
// Add Prefix if String is not empty.
var trimRegex = new RegExp('([a-zA-Z])', 'g');
var trimRegex = new RegExp("([a-zA-Z])", "g");
var w = convertString.match(trimRegex);
if (w != null && w.length > 0) {
convertString = prefix + ' '+ convertString;
convertString = prefix + " " + convertString;
}
// Remove comma(,) before WHERE
if (children.name.toLowerCase() != 'where'){
var regex = new RegExp('(,)([\\s]*?)(where)', 'gi');
convertString = convertString.replace(regex, ' WHERE ');
if (children.name.toLowerCase() != "where") {
var regex = new RegExp("(,)([\\s]*?)(where)", "gi");
convertString = convertString.replace(regex, " WHERE ");
}
return convertString;
} catch (err) {
throw new Error("Error occurred during convert <" + children.name.toLowerCase() + "> element.");
throw new Error(
"Error occurred during convert <" +
children.name.toLowerCase() +
"> element."
);
}
}
};
var convertSet = function(children, param, namespace, myBatisMapper) {
var convertString = '';
try{
var convertSet = function (children, param, namespace, myBatisMapper) {
var convertString = "";
try {
// Convert children first.
for (var j=0, nextChildren; nextChildren=children.children[j]; j++){
convertString += convertChildren(nextChildren, param, namespace, myBatisMapper);
for (var j = 0, nextChildren; (nextChildren = children.children[j]); j++) {
convertString += convertChildren(
nextChildren,
param,
namespace,
myBatisMapper
);
}
// Remove comma repeated more than 2.
var regex = new RegExp('(,)(,|\\s){2,}', 'g');
convertString = convertString.replace(regex, ',\n');
var regex = new RegExp("(,)(,|\\s){2,}", "g");
convertString = convertString.replace(regex, ",\n");
// Remove first comma if exists.
var regex = new RegExp('(^)([\\s]*?)(,)', 'g');
convertString = convertString.replace(regex, '');
var regex = new RegExp("(^)([\\s]*?)(,)", "g");
convertString = convertString.replace(regex, "");
// Remove last comma if exists.
regex = new RegExp('(,)([\\s]*?)($)', 'g');
convertString = convertString.replace(regex, '');
convertString = ' SET ' + convertString;
regex = new RegExp("(,)([\\s]*?)($)", "g");
convertString = convertString.replace(regex, "");
convertString = " SET " + convertString;
return convertString;

@@ -322,73 +389,95 @@ } catch (err) {

}
}
};
var convertBind = function(children, param) {
var convertBind = function (children, param) {
var evalString = children.attrs.value;
// Create Evaluate string
evalString = replaceEvalString(evalString, param);
param[children.attrs.name] = eval(evalString);
return param;
}
};
var convertInclude = function(children, param, namespace, myBatisMapper) {
try{
var convertInclude = function (children, param, namespace, myBatisMapper) {
try {
// Add Properties to param
for (var j=0, nextChildren; nextChildren=children.children[j]; j++){
if (nextChildren.type == 'tag' && nextChildren.name == 'property'){
param[nextChildren.attrs['name']] = nextChildren.attrs['value'];
for (var j = 0, nextChildren; (nextChildren = children.children[j]); j++) {
if (nextChildren.type == "tag" && nextChildren.name == "property") {
param[nextChildren.attrs["name"]] = nextChildren.attrs["value"];
}
}
} catch (err) {
throw new Error("Error occurred during read <property> element in <include> element.");
throw new Error(
"Error occurred during read <property> element in <include> element."
);
}
try{
var refid = convertParametersInner('#', children['attrs']['refid'], param);
refid = convertParametersInner('$', refid, param);
var statement = '';
for (var i=0, children; children = myBatisMapper[namespace][refid][i]; i++) {
try {
var refid = convertParametersInner("#", children["attrs"]["refid"], param);
refid = convertParametersInner("$", refid, param);
var statement = "";
for (
var i = 0, children;
(children = myBatisMapper[namespace][refid][i]);
i++
) {
statement += convertChildren(children, param, namespace, myBatisMapper);
}
}
} catch (err) {
throw new Error("Error occurred during convert 'refid' attribute in <include> element.");
throw new Error(
"Error occurred during convert 'refid' attribute in <include> element."
);
}
return statement;
}
};
var isDict = function(v) {
return typeof v==='object' && v!==null && !(v instanceof Array) && !(v instanceof Date);
}
var isDict = function (v) {
return (
typeof v === "object" &&
v !== null &&
!(v instanceof Array) &&
!(v instanceof Date)
);
};
var replaceEvalString = function(evalString, param) {
var replaceEvalString = function (evalString, param) {
var keys = Object.keys(param);
for (var i=0; i<keys.length; i++){
var replacePrefix = '';
var replacePostfix = '';
for (var i = 0; i < keys.length; i++) {
var replacePrefix = "";
var replacePostfix = "";
var paramRegex = null;
if (isDict(param[keys[i]])) {
replacePrefix = ' param.';
replacePostfix = '';
paramRegex = new RegExp('(^|[^a-zA-Z0-9])(' + keys[i] + '\\.)([a-zA-Z0-9]+)', 'g');
} else {
replacePrefix = ' param.';
replacePostfix = ' ';
paramRegex = new RegExp('(^|[^a-zA-Z0-9])(' + keys[i] + ')($|[^a-zA-Z0-9])', 'g');
replacePrefix = " param.";
replacePostfix = "";
paramRegex = new RegExp(
"(^|[^a-zA-Z0-9])(" + keys[i] + "\\.)([a-zA-Z0-9]+)",
"g"
);
} else {
replacePrefix = " param.";
replacePostfix = " ";
paramRegex = new RegExp(
"(^|[^a-zA-Z0-9])(" + keys[i] + ")($|[^a-zA-Z0-9])",
"g"
);
}
evalString = evalString.replace(paramRegex, ("$1" + replacePrefix + "$2" + replacePostfix + "$3"));
evalString = evalString.replace(
paramRegex,
"$1" + replacePrefix + "$2" + replacePostfix + "$3"
);
}
return evalString;
}
};
var uniqueArray = function(a){
var uniqueArray = function (a) {
var seen = {};

@@ -398,5 +487,5 @@ var out = [];

var j = 0;
for(var i=0; i<len; i++) {
for (var i = 0; i < len; i++) {
var item = a[i];
if(seen[item] !== 1) {
if (seen[item] !== 1) {
seen[item] = 1;

@@ -407,3 +496,3 @@ out[j++] = item;

return out;
}
};

@@ -418,3 +507,3 @@ module.exports = {

convertChoose,
convertBind
convertBind,
};
{
"name": "mybatis-mapper-myyrakle",
"version": "0.6.6",
"version": "0.6.7",
"description": "mybatis-mapper can generate SQL statements from the MyBatis3 Mapper XML file in node.js. You can use Dynamic SQL elements",

@@ -5,0 +5,0 @@ "author": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc