@sedeh/extensible-json-transformations
Version:
Have you ever wanted to perform query on a JSON? Have you ever wanted to consume it in a program but the JSON was in a form not suitable for your program? Have you wanted to use the JSON without writing any code to do it? Have you wondered what it takes
1 lines • 57.9 kB
Source Map (JSON)
{"version":3,"file":"sedeh-extensible-json-transformations.mjs","sources":["../../../../projects/extensible-json-transformations/src/lib/shared/inquirer.ts","../../../../projects/extensible-json-transformations/src/lib/shared/transformations.ts","../../../../projects/extensible-json-transformations/src/lib/extensible-json-transformations.ts","../../../../projects/extensible-json-transformations/src/sedeh-extensible-json-transformations.ts"],"sourcesContent":["/*\r\n * Intentionally avoiding use of map call on list to reduce the call stack numbers.\r\n * On large scale JSON, call stack becomes a problem to be avoided.\r\n */\r\n\r\n\r\nexport interface Template {\r\n name: string,\r\n match?: string,\r\n value?: string,\r\n context: string,\r\n inPool?: string,\r\n style: any\r\n}\r\n\r\nexport interface QueryOperation {\r\n name: string,\r\n args?: QueryOperation[]\r\n}\r\n\r\nexport class JXPath {\r\n private path;\r\n constructor(jpath: string){\r\n this.path = jpath?.split(\".\");\r\n }\r\n fromLast() {\r\n return new JXPath(this.path[this.path.length - 1]);\r\n }\r\n nodeOf(node: any) {\r\n return this._nodeOf(node, this.path);\r\n }\r\n private _nodeOf(node: any, path: string[]) {\r\n let pItem = node;\r\n for (let i = 0; i < this.path.length; i++) {\r\n if (pItem instanceof Array) {\r\n const list = [];\r\n for (let q = 0; q < this.path.length; q++) {\r\n const item = pItem[q];\r\n const x = this._nodeOf(item[path[i]], path.slice(i+1,path.length));\r\n if (x && x !== null) {\r\n list.push(x);\r\n }\r\n };\r\n if (list.length) {\r\n pItem = list;\r\n }\r\n break;\r\n } else {\r\n pItem = pItem ? pItem[path[i]] : pItem;\r\n }\r\n }\r\n return pItem;\r\n }\r\n valueOf(node: any) {\r\n return this._valueOf(node, this.path);\r\n }\r\n private _valueOf(node: any, path: string[]) {\r\n let pItem = node;\r\n for (let i = 0; i < this.path.length; i++) {\r\n if (pItem instanceof Array) {\r\n const list = [];\r\n for (let q = 0; q < this.path.length; q++) {\r\n const item = pItem[q];\r\n list.push(this._valueOf(item[path[i]], path.slice(i+1,path.length)));\r\n }\r\n pItem = list;\r\n break;\r\n } else if (path.length) {\r\n pItem = pItem ? pItem[path[i]] : pItem;\r\n } else {\r\n pItem = pItem;\r\n }\r\n }\r\n return pItem;\r\n }\r\n}\r\n\r\nexport class Inquirer {\r\n\r\n private supportedMethods: any = {};\r\n private templates: any = {};\r\n private rootNode!: any;\r\n private contextNode!: any; // should be set before any call is made... this is to avoid call stack overflow in extremelt large JSON\r\n private globalPool: any = {};\r\n private pathPool: any = {};// to avoid stackoverflow... and perform faster\r\n\r\n constructor() {\r\n this.addSupportingMethod(\"valueOf\", this.valueOf);\r\n this.addSupportingMethod(\"each\", this.each);\r\n this.addSupportingMethod(\"split\", this.split);\r\n this.addSupportingMethod(\"concat\", this.concatenate);\r\n this.addSupportingMethod(\"enlist\", this.enlist);\r\n this.addSupportingMethod(\"join\", this.join);\r\n this.addSupportingMethod(\"filter\", this.filter);\r\n this.addSupportingMethod(\"select\", this.select);\r\n this.addSupportingMethod(\"style\", this.style);\r\n this.addSupportingMethod(\"match\", this.match);\r\n this.addSupportingMethod(\"apply\", this.apply);\r\n this.addSupportingMethod(\"filter\", this.filter);\r\n this.addSupportingMethod(\"select\", this.select);\r\n this.addSupportingMethod(\"offPool\", this.offPool);\r\n }\r\n\r\n private jXPathFor(path: string) {\r\n let p:JXPath = this.pathPool[path];\r\n if (!p) {\r\n p = new JXPath(path);\r\n this.pathPool[path] = p;\r\n }\r\n return p;\r\n }\r\n\r\n setRootNode(node:any) {\r\n this.rootNode = this.nodeList(node);\r\n this.initPools(this.templates);\r\n }\r\n setContextNode(node: any) {\r\n this.contextNode = node;\r\n }\r\n templateForName(name: string) {\r\n return this.templates[name];\r\n }\r\n // if node is null, root node will be used.\r\n nodeList(node: any) {\r\n const item = node === null ? this.rootNode : node;\r\n let list: any;\r\n\r\n if (item instanceof Array) {\r\n list = item;\r\n } else {\r\n const x = Object.keys(item);\r\n list = [];\r\n for (let t = 0; t < x.length; t++) {\r\n const xItem = x[t];\r\n if (item[xItem] instanceof Array) {\r\n list = list.concat(item[xItem]);\r\n } else {\r\n list.push(item[xItem]);\r\n }\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n // performs query of nested function calls on the given node.\r\n query(command:string, node: any) {\r\n const mothods =this.toQueryOperation(command);\r\n\r\n if (node instanceof Array) {\r\n let list: any = [];\r\n for (let q = 0; q < node.length; q++) {\r\n const nodeItem = node[q];\r\n list = list.concat(this.invoke(mothods, nodeItem))\r\n };\r\n return list;\r\n }\r\n return this.invoke(mothods, node);\r\n }\r\n\r\n // performs query with given list of query opertations\r\n invoke(operation:QueryOperation, node: any) {\r\n let list:any = [];\r\n if ((typeof node === \"object\") && (node instanceof Array) && node.length === 0) {\r\n list = [];\r\n } else if (typeof operation === 'object') {\r\n const f = this.supportedMethods[operation.name];\r\n if (f) {\r\n if (operation.args instanceof Array) {\r\n for (let a = 0; a < operation.args.length; a++) {\r\n const arg = operation.args[a]\r\n if (arg.name) {\r\n list.push(this.invoke(arg, node));\r\n } else {\r\n list.push(arg);\r\n }\r\n }\r\n } else {\r\n list.push(operation.args);\r\n }\r\n // list.push(node);\r\n const oldContext = this.contextNode;\r\n this.contextNode = node;\r\n list = f.apply(this, list);\r\n this.contextNode = oldContext;\r\n } else {\r\n list = operation.name;\r\n }\r\n } else {\r\n list = operation;\r\n }\r\n return list;\r\n }\r\n\r\n // concatenate(a, b, c): joins arguments into a string\r\n // join args[0,1,2]\r\n concatenate(...args: any) {\r\n const left = args[0];\r\n const delim= args[1];\r\n const right= args[2];\r\n const result = [];\r\n\r\n if (left instanceof Array) {\r\n if (right instanceof Array) {\r\n if (left.length > right.length) {\r\n for (let q = 0; q < left.length; q++) {\r\n result.push( left[q] + delim + (right.length > q ? right[q] : \"\"));\r\n };\r\n } else {\r\n for (let q = 0; q < right.length; q++) {\r\n result.push( (left.length > q ? left[q] : \"\") + delim + right[q]);\r\n };\r\n }\r\n } else {\r\n for (let q = 0; q < left.length; q++) {\r\n result.push( left[q] + delim + right);\r\n };\r\n }\r\n } else {\r\n if (right instanceof Array) {\r\n for (let q = 0; q < right.length; q++) {\r\n result.push( left + delim + right[q]);\r\n };\r\n } else {\r\n result.push(left + delim + right);\r\n }\r\n }\r\n return result.length > 1 ? result : result[0];\r\n }\r\n // split(item,','): splits value into a list\r\n // split args[0] with args[1]\r\n split(...args: any) {\r\n if (args[0]) {\r\n return [args[0].split(args[1])];\r\n }\r\n return [];\r\n }\r\n // valueOf(path): evaluates value of argument path\r\n // path = args[0], node to evaluate = args[1]\r\n valueOf(...args: any) {\r\n const jpath = this.jXPathFor(args[0]);\r\n return jpath.valueOf(this.contextNode);\r\n }\r\n // each(list,method): For each item in list, invode the callback method\r\n // each item of args[0] execute function of args[1]\r\n each(...args: any) {\r\n const list = [];\r\n const method = {name: \"valueOf\", args: args[1]};\r\n \r\n for (let q = 0; q < args[0].length; q++) {\r\n const node = args[0][q];\r\n list.push(this.invoke(method, node));\r\n };\r\n return list;\r\n }\r\n // enlist(...): insert argument values into a list\r\n enlist(...args: any) {\r\n const list: any = [];\r\n args.map( (item: any) => {\r\n list.push(item); // make sure last two item are not node and template\r\n })\r\n return [list];\r\n }\r\n // join(array,','): joins items of the list into a string\r\n join(...args: any) {\r\n if (args[0]) {\r\n return this.joinItems(Array.isArray(args[0][0]) ? args[0][0] : args[0], args[1])\r\n }\r\n return [];\r\n }\r\n private joinItems(list: any[], separator: string) {\r\n return list.join(separator);\r\n }\r\n\r\n // apply(template,path,array): apply the template in root context for each value \r\n // that matches the given path. args[0] name to apply\r\n apply(...args: any) {\r\n const path = this.jXPathFor(args[1]);\r\n const path2= path.fromLast();\r\n const values = args[2];\r\n let list: any[] = [];\r\n\r\n for (let c = 0; c < this.rootNode.length; c++) {\r\n const node = this.rootNode[c];\r\n const value = path.nodeOf(node);\r\n this.evaluateIntoList(value, list, node, path2, values, '=');\r\n };\r\n if (list.length) {\r\n list = this.style(args[0], list);\r\n }\r\n return list;\r\n }\r\n // match(template,path,operation,values): , node args[4]\r\n // for value of target in given template nodes, evaluate operation for given value(s). \r\n match(...args: any) {\r\n const template:Template = this.templateForName(args[0]);\r\n\r\n if (!template) {\r\n throw {\r\n message: \"Missing Template definition for '\" + args[0] + \"'.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n const path = this.jXPathFor(args[1]);\r\n const path2= path.fromLast();\r\n const operation = args[2];\r\n const values = args[3];\r\n const nodes = this.templateNodes(template, this.contextNode)\r\n const list: any[] = [];\r\n if (nodes instanceof Array) {\r\n for (let c = 0; c < nodes.length; c++) {\r\n const node = nodes[c];\r\n const value = path.nodeOf(node);\r\n this.evaluateIntoList(value, list, nodes, path2, values, operation);\r\n };\r\n } else {\r\n const value = path.nodeOf(nodes);\r\n this.evaluateIntoList(value, list, nodes, path2, values, operation);\r\n }\r\n return list;\r\n }\r\n private evaluateIntoList(value: any[], list: any, nodes: any, path2: any, values: any, operation: any) {\r\n if (value instanceof Array) {\r\n for (let d = 0; d < value.length; d++) {\r\n const v = value[d];\r\n const x = path2.valueOf(v);\r\n if (v instanceof Array) {\r\n this.evaluateIntoList(v, list, nodes, path2, values, operation);\r\n } else if (this.evaluateOperation(x, operation, values)) {\r\n list.push(nodes);\r\n }\r\n }\r\n } else {\r\n const x = path2.valueOf(nodes);\r\n if (this.evaluateOperation(x,operation, values)) {\r\n list.push(nodes);\r\n }\r\n }\r\n }\r\n\r\n // filter(path,operation,value): for value of target in current context, \r\n // evaluate operation for given value(s). Supported operations are `=,<,>,in,!`. 'in' for list values mean contains and for string value means indexOf. '!' means not equal or not in.\r\n filter(...args: any) {\r\n const path = this.jXPathFor(args[0]);\r\n const operation = args[1];\r\n const values = args[2];\r\n const list = [];\r\n const items = Array.isArray(this.contextNode) ? this.contextNode: [this.contextNode];\r\n for (let a = 0; a < items.length; a++) {\r\n const node = items[a];\r\n const value = path.valueOf(node);\r\n if (value instanceof Array) {\r\n for (let d = 0; d < value.length; d++) {\r\n const v = value[d];\r\n if (this.evaluateOperation(v,operation, values)) {\r\n list.push(node);\r\n }\r\n }\r\n } else {\r\n if (this.evaluateOperation(value,operation, values)) {\r\n list.push(node);\r\n }\r\n }\r\n }\r\n return list;\r\n }\r\n // select(path): select the nodes with given path in current context\r\n select(...args: any) {\r\n const path = this.jXPathFor(args[0]);\r\n let list = [];\r\n if (this.contextNode instanceof Array) {\r\n for (let d = 0; d < this.contextNode.length; d++) {\r\n const node = this.contextNode[d];\r\n const value = path.nodeOf(node);\r\n if (value && value.length) {\r\n list.push(node);\r\n }\r\n }\r\n } else {\r\n const value = path.nodeOf(this.contextNode);\r\n if (value && value.length) {\r\n if (value instanceof Array) {\r\n list = value;\r\n } else {\r\n list.push(value);\r\n }\r\n }\r\n }\r\n return list;\r\n }\r\n // style(template, array): apply the given template for the given array\r\n style(...args: any) {\r\n const template:Template = this.templateForName(args[0]);\r\n\r\n if (!template) {\r\n throw {\r\n message: \"Missing Template definition for '\" + args[0] + \"'.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n\r\n const result = [];\r\n const attrs = Object.keys(template.style);\r\n \r\n if (args[1] instanceof Array) {\r\n for (let a = 0; a < args[1].length; a++) {\r\n const item = args[1][a];\r\n const node: any = {};\r\n for (let d = 0; d < attrs.length; d++) {\r\n const attr = attrs[d];\r\n node[attr] = this.invoke(template.style[attr], item);\r\n }\r\n result.push(node);\r\n }\r\n } else {\r\n const node: any = {};\r\n for (let d = 0; d < attrs.length; d++) {\r\n const attr = attrs[d];\r\n node[attr] = this.invoke(template.style[attr], args[1]);\r\n }\r\n result.push(node);\r\n }\r\n return result;\r\n }\r\n addSupportingMethod(name: string, method: any) {\r\n this.supportedMethods[name] = method;\r\n }\r\n private removeQuotes(str: string) {\r\n return (str.length && str[0] === '\\'' && str[str.length-1] === '\\'') ? str.substring(1,str.length-1) : str;\r\n }\r\n toQueryOperation(methods: any) {\r\n const operations = methods.replace(/([^']+)|('[^']+')/g, function($0: any, $1: any, $2: any) {\r\n if ($1) {\r\n return $1.replace(/\\s/g, '');\r\n } else {\r\n return $2; \r\n } \r\n }).replace(/'[^']+'/g, function (match: any) {\r\n return match.replace(/,/g, '~');\r\n });\r\n return this.toFunctions(operations);\r\n }\r\n private toFunctions(item: any){\r\n // if item = join(enlist(valueOf(address.street),valueOf(address.city),valueOf(address.zipcode)),',')\r\n let i = -1;\r\n let j = -1;\r\n let k = -1;\r\n let c = 0;\r\n let json: any = {};\r\n for (let cindex = 0; cindex < item.length; cindex++) {\r\n if (item[cindex] === '(') {\r\n if (c === 0) {\r\n i = cindex;\r\n }\r\n c++;\r\n } else if (item[cindex] === ')') {\r\n c--;\r\n if (c === 0){\r\n const isArry = (json instanceof Array);\r\n\r\n j = cindex;\r\n if (!isArry && (j === (item.length - 1))) {\r\n json[\"name\"] = item.substring(0, i);\r\n json[\"args\"] = this.toFunctions(item.substring(i+1,j));\r\n } else {\r\n if (!isArry) {\r\n json = [];\r\n }\r\n json.push({ \r\n name: item.substring(k+1, i), \r\n args: this.toFunctions(item.substring(i+1,j)) \r\n });\r\n }\r\n }\r\n } else if (item[cindex] === ',') {\r\n if (c === 0 && (cindex-1 !== k)) {\r\n const isArry = (json instanceof Array);\r\n\r\n if (k < 0) {\r\n if (i < 0) {\r\n if (!isArry) {\r\n json = [];\r\n }\r\n json.push({\r\n name: this.removeQuotes(item.substring(k+1, cindex).replace(/~/g, ',')),\r\n args: []\r\n });\r\n }\r\n k = cindex;\r\n } else {\r\n const x = this.removeQuotes(item.substring(k+1, cindex).replace(/~/g, ','));\r\n if (x.indexOf('(') < 0) {\r\n if (json instanceof Array) {\r\n json.push(x);\r\n } else {\r\n json.args.push(x);\r\n }\r\n }\r\n k = cindex;\r\n }\r\n } else if (c === 0 && (cindex-1 === k)) {\r\n k = cindex;\r\n }\r\n }\r\n }\r\n if (i >= 0 && j < 0) {\r\n throw {\r\n message: \"incorrect method call declaration. Missing ')'\",\r\n stack: new Error().stack\r\n };\r\n } else if (i<0 && j>0) {\r\n throw {\r\n message: \"incorrect method call declaration. Missing '('\",\r\n stack: new Error().stack\r\n };\r\n }else if (i < 0 && j < 0 && k < 0) {\r\n return item;\r\n }else if (c === 0 && k > j) {\r\n if (json instanceof Array) {\r\n json.push(this.removeQuotes(item.substring(k+1, item.length).replace(/~/g, ',')));\r\n } else {\r\n json.args.push(this.removeQuotes(item.substring(k+1, item.length).replace(/~/g, ',')));\r\n }\r\n }\r\n return json;\r\n }\r\n\r\n templateNodes(template:Template, nodes: any) {\r\n let list = [];\r\n let nodeList = nodes;\r\n\r\n if (template.context === \"root\") {\r\n if (!this.rootNode) {\r\n throw {\r\n message:\"Unable to find root node to perform operation.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n nodeList = this.nodeList(this.rootNode);\r\n } \r\n if (template.match && template.match.length) {\r\n const path = this.jXPathFor(template.match);\r\n\r\n for (let z = 0; z < nodeList.length; z++) {\r\n const node = nodeList[z];\r\n if (path.valueOf(node) === template.value) {\r\n list.push(node);\r\n }\r\n } \r\n } else if (nodes) {\r\n list = nodeList;\r\n }\r\n return list;\r\n }\r\n // Supported operations are `=,<,>,in,!`. 'in' for list values mean contains and\r\n // for string value means indexOf. '!' means not equal or not in.\r\n private evaluateOperation(left: any, operation: any, right: any) {\r\n let result = false;\r\n if (right instanceof Array) {\r\n if (operation === \"=\") {\r\n for (let i=0;i<right.length;i++){\r\n if (left == right[i]){\r\n result = true;\r\n break;\r\n }\r\n }\r\n } else if (operation === \"in\") {\r\n for (let i=0;i<right.length;i++){\r\n if (right[i].indexOf(left) >= 0){\r\n result = true;\r\n break;\r\n }\r\n };\r\n } else if (operation === \"!\") {\r\n let f = false;\r\n for (let i=0;i<right.length;i++){\r\n if (left == right[i]){\r\n f = true;\r\n break;\r\n }\r\n };\r\n result = !f;\r\n }\r\n\r\n } else {\r\n if (operation === \"=\") {\r\n result = (left == right);\r\n } else if (operation === \"in\") {\r\n result = (right.indexOf(left) >= 0);\r\n } else if (operation === \"!\") {\r\n result = (left !== right);\r\n } else if (operation === \">\") {\r\n result = (parseFloat(left) > parseFloat(right));\r\n } else if (operation === \"<\") {\r\n result = (parseFloat(left) < parseFloat(right));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n // offPool(template,key): Will use the given template pool to pick up item(s) with given key(s)\r\n private offPool(...args: any) {\r\n const list = [];\r\n const pool = this.globalPool[args[0]];\r\n const keys = args[1];\r\n if (!pool) {\r\n throw {\r\n message: \"Attempting to access pool '\" + args[0] + \"' that is not created.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n if (keys instanceof Array){\r\n for (let z=0; z < keys.length; z++) {\r\n const key = keys[z];\r\n const node = pool[key];\r\n if (node) {\r\n list.push(node);\r\n } else {\r\n // should we throw here?\r\n }\r\n }\r\n } else {\r\n const node = pool[keys];\r\n if (node) {\r\n list.push(node);\r\n }\r\n }\r\n return list;\r\n }\r\n \r\n initTemplates(list: any) {\r\n this.templates = {};\r\n for (let i=0; i < list.length; i++){\r\n const template: any= list[i];\r\n const styles = Object.keys(template.style)\r\n for (let j = 0; j < styles.length; j++) {\r\n const key = styles[j];\r\n const method = template.style[key];\r\n if (typeof method === \"string\") {\r\n template.style[key] = this.toQueryOperation(method);\r\n }\r\n }\r\n this.templates[template.name] = template;\r\n }\r\n }\r\n initPools(templates: any) {\r\n const list = Object.keys(templates);\r\n if (list.length === 0) {\r\n throw {\r\n message: \"Missing Template definitions.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n if (!this.rootNode) {\r\n throw {\r\n message: \"Unable to find root node to perform operation.\",\r\n stack: new Error().stack\r\n };\r\n }\r\n\r\n this.globalPool = {};\r\n\r\n for (let i=0; i < list.length; i++){\r\n const template: string = list[i];\r\n const t = this.templateForName(template);\r\n if (t.inPool) {\r\n const pool: any = {};\r\n const path = this.jXPathFor(t.inPool);\r\n const match= t.match;\r\n const nodes= this.rootNode;\r\n if (match && t.value) {\r\n const mpath = this.jXPathFor(match);\r\n \r\n for (let k=0; k < nodes.length; k++){\r\n const v = mpath.valueOf(nodes[k]);\r\n if (v === t.value) {\r\n pool[path.valueOf(nodes[k])] = nodes[k];\r\n }\r\n }\r\n } else {\r\n for (let k=0; k < nodes.length; k++){\r\n pool[path.valueOf(nodes[k])] = nodes[k];\r\n }\r\n }\r\n this.globalPool[t.name] = pool;\r\n }\r\n }\r\n }\r\n}\r\n","import { JXPath, Inquirer, Template } from './inquirer';\r\n\r\n/*\r\n * tool to display result of a search on set of points of interests on objects.\r\n */\r\n\r\nexport interface Transformations {\r\n name: string,\r\n importUrls?:string[],\r\n rootTemplate: string,\r\n onResult?: string,\r\n templates: Template[]\r\n}\r\n\r\nexport class Styler {\r\n\r\n private transformations: Transformations;\r\n private inquirer:Inquirer;\r\n\r\n constructor(transformations:Transformations) {\r\n this.inquirer = new Inquirer();\r\n this.transformations = transformations;\r\n this.inquirer.initTemplates(this.transformations.templates);\r\n }\r\n\r\n public changeRootNode(node:any) {\r\n this.inquirer.setRootNode(node);\r\n }\r\n\r\n public transform() {\r\n let result = [];\r\n const template:Template = this.inquirer.templateForName(this.transformations.rootTemplate);\r\n \r\n if (template) {\r\n const attrs = Object.keys(template.style);\r\n const nodeList = this.inquirer.templateNodes(template, this.inquirer.nodeList(null));\r\n \r\n for(let i = 0; i < nodeList.length; i++) {\r\n const currentNode = nodeList[i];\r\n const resultingNode: any = {};\r\n for( let j = 0; j < attrs.length; j++) {\r\n const attr = attrs[j];\r\n resultingNode[attr] = this.inquirer.invoke(template.style[attr], currentNode);\r\n };\r\n result.push(resultingNode);\r\n };\r\n }\r\n if(this.transformations.onResult && this.transformations.onResult.length) {\r\n const functions = this.inquirer.toQueryOperation(this.transformations.onResult);\r\n result = this.inquirer.invoke(functions, result);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*\r\n * tool to display result of a search on set of points of interests on objects.\r\n */\r\nimport {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Styler, Transformations } from './shared/transformations';\r\n\r\n@Component({\r\n selector: 'xjslt',\r\n standalone: true,\r\n template: ``,\r\n styles: [],\r\n})\r\nexport class XjsltComponent implements OnInit, OnChanges {\r\n \r\n private styler!: any;\r\n\r\n @Input(\"node\")\r\n node = {};\r\n\r\n @Input(\"transformations\")\r\n transformations!: Transformations;\r\n\r\n @Output(\"ontransformation\")\r\n ontransformation = new EventEmitter();\r\n\r\n @Output(\"onerror\")\r\n onerror = new EventEmitter();\r\n\r\n ngOnInit() {\r\n if (this.node && this.transformations) {\r\n if(!this.styler) {\r\n this.styler = new Styler(this.transformations);\r\n }\r\n this.styler.changeRootNode(this.node);\r\n try {\r\n this.ontransformation.emit(this.styler.transform());\r\n } catch(e) {\r\n console.log(e)\r\n this.onerror.emit(e);\r\n }\r\n }\r\n }\r\n ngOnChanges(chages: any) {\r\n if (chages.transformations) {\r\n this.styler = undefined;\r\n setTimeout(this.ngOnInit.bind(this), 333);\r\n } else if (chages.node) {\r\n setTimeout(this.ngOnInit.bind(this), 333);\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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