208 lines
5.8 KiB
Plaintext
Raw Normal View History

<script>const _=
<#macro objectToJson_please_ignore_errors object depth>
<@compress>
<#local isHash = false>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
/* can't evaluate if object is hash */
undefined
<#return>
</#attempt>
<#if isHash>
<#local keys = "">
2021-04-01 23:42:31 +02:00
<#attempt>
<#local keys = object?keys>
2021-04-01 23:42:31 +02:00
<#recover>
/* can't list keys of object */
undefined
<#return>
2021-04-01 23:42:31 +02:00
</#attempt>
{${'\n'}
2021-04-01 23:42:31 +02:00
<#list keys as key>
2021-04-01 23:42:31 +02:00
<#if key == "class">
/* skipping "class" property of object */
<#continue>
</#if>
2021-04-01 23:42:31 +02:00
<#local value = "">
2021-04-01 23:42:31 +02:00
<#attempt>
<#local value = object[key]>
<#recover>
/* couldn't dereference ${key} of object */
<#continue>
</#attempt>
2021-04-01 23:42:31 +02:00
2021-10-18 14:50:04 +02:00
<#if depth gt 7>
/* Avoid calling recustively too many times depth: ${depth}, key: ${key} */
<#continue>
</#if>
2021-04-01 23:42:31 +02:00
"${key}": <@objectToJson_please_ignore_errors object=value depth=depth+1/>,
2021-04-01 23:42:31 +02:00
</#list>
2021-04-01 23:42:31 +02:00
}${'\n'}
2021-04-01 23:42:31 +02:00
<#return>
2021-04-01 23:42:31 +02:00
</#if>
2021-04-01 23:42:31 +02:00
<#local isMethod = "">
2021-04-01 23:42:31 +02:00
<#attempt>
<#local isMethod = object?is_method>
<#recover>
/* can't test if object is a method */
undefined
<#return>
</#attempt>
<#if isMethod>
undefined
<#return>
</#if>
<#local isBoolean = "">
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
/* can't test if object is a boolean */
undefined
<#return>
</#attempt>
<#if isBoolean>
${object?c}
<#return>
</#if>
2021-04-01 17:15:28 +02:00
2021-04-01 23:42:31 +02:00
<#local isEnumerable = "">
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
/* can't test if object is enumerable */
undefined
<#return>
</#attempt>
2021-04-01 23:42:31 +02:00
<#if isEnumerable>
2021-04-01 23:42:31 +02:00
[${'\n'}
2021-04-01 23:42:31 +02:00
<#list object as item>
2021-04-01 23:42:31 +02:00
<@objectToJson_please_ignore_errors object=item depth=depth+1/>,
2021-04-01 17:15:28 +02:00
</#list>
]${'\n'}
2021-04-01 23:42:31 +02:00
<#return>
</#if>
2021-04-01 23:42:31 +02:00
<#attempt>
"${object?replace('"', '\\"')?no_esc}"
<#recover>
/* couldn't convert into string non hash, non method, non boolean, non enumerable object */
undefined;
<#return>
</#attempt>
2021-04-01 23:42:31 +02:00
</@compress>
</#macro>
2021-04-01 23:42:31 +02:00
(()=>{
2021-04-01 23:42:31 +02:00
const nonAutomaticallyConvertible = {
"messagesPerField": {
2021-04-01 17:15:28 +02:00
<#assign fieldNames = ["global", "userLabel", "username", "email", "firstName", "lastName", "password", "password-confirm"]>
2021-10-11 03:25:02 +02:00
<#attempt>
<#list profile.attributes as attribute>
<#assign fieldNames += [attribute.name]>
</#list>
<#recover>
</#attempt>
2021-10-11 03:25:02 +02:00
"printIfExists": function (fieldName, x) {
<#list fieldNames as fieldName>
if(fieldName === "${fieldName}" ){
<#attempt>
return "${messagesPerField.printIfExists(fieldName,'1')}" ? x : undefined;
<#recover>
</#attempt>
}
</#list>
throw new Error("There is no " + fieldName + " field");
},
"existsError": function (fieldName) {
<#list fieldNames as fieldName>
if(fieldName === "${fieldName}" ){
<#attempt>
return <#if messagesPerField.existsError('${fieldName}')>true<#else>false</#if>;
<#recover>
</#attempt>
}
</#list>
throw new Error("There is no " + fieldName + " field");
},
"get": function (fieldName) {
<#list fieldNames as fieldName>
if(fieldName === "${fieldName}" ){
<#attempt>
<#if messagesPerField.existsError('${fieldName}')>
return "${messagesPerField.get('${fieldName}')?no_esc}";
</#if>
<#recover>
</#attempt>
}
</#list>
throw new Error("There is no " + fieldName + " field");
},
"exists": function (fieldName) {
<#list fieldNames as fieldName>
if(fieldName === "${fieldName}" ){
<#attempt>
return <#if messagesPerField.exists('${fieldName}')>true<#else>false</#if>;
<#recover>
</#attempt>
}
</#list>
throw new Error("There is no " + fieldName + " field");
}
},
"msg": function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); },
"advancedMsg": function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); }
};
const out = {};
Object.deepAssign(
out,
//Removing all the undefined
JSON.parse(JSON.stringify(<@objectToJson_please_ignore_errors object=.data_model depth=0 />))
);
2021-04-01 23:42:31 +02:00
Object.deepAssign(
out,
nonAutomaticallyConvertible
);
2021-04-01 23:42:31 +02:00
return out;
})()
</script>