dbgate-plugin-xml
Version:
XML import/export plugin for DbGate
1 lines • 2.89 kB
JavaScript
(()=>{var t={237:(t,e,s)=>{const r=s(514),n=s(370);t.exports={packageName:"dbgate-plugin-xml",shellApi:{reader:r,writer:n}}},514:(t,e,s)=>{const r=s(896),n=s(203),a=s(557),{getLogger:i}=global.DBGATE_PACKAGES["dbgate-tools"],h=i("xmlReader");class o extends n.Transform{constructor({itemElementName:t}){super({objectMode:!0});let e=t;this.push({__isStreamHeader:!0,__isDynamicStructure:!0}),this.rowsWritten=0,this.parser=new a,this.stack=[],this.parser.on("opentag",((t,s)=>{e||1!=this.stack.length||(e=t),this.stack.push({name:t,attrs:s,nodes:{}})})),this.parser.on("text",(t=>{this.stack.length>=2&&(this.stack[this.stack.length-2].nodes[this.stack[this.stack.length-1].name]=t),this.stack.length>=1&&(this.stack[this.stack.length-1].nodes.$text=t)})),this.parser.on("cdata",(t=>{this.stack.length>=2&&(this.stack[this.stack.length-2].nodes[this.stack[this.stack.length-1].name]=t),this.stack.length>=1&&(this.stack[this.stack.length-1].nodes.$text=t)})),this.parser.on("closetag",((t,s)=>{if(t==e){const t={...this.stack[this.stack.length-1].attrs,...this.stack[this.stack.length-1].nodes};Object.keys(t).length>0&&(this.rowsWritten+=1,this.push(t))}this.stack.splice(-1)}))}_transform(t,e,s){this.parser.write(t),s()}}t.exports=async function({fileName:t,encoding:e="utf-8",itemElementName:s}){return h.info(`DBGM-00143 Reading file ${t}`),[r.createReadStream(t,e),new o({itemElementName:s})]}},370:(t,e,s)=>{const r=s(896),n=s(203),{getLogger:a}=global.DBGATE_PACKAGES["dbgate-tools"],i=a("xmlWriter");class h extends n.Transform{constructor({itemElementName:t,rootElementName:e}){super({objectMode:!0}),this.itemElementName=t||"row",this.rootElementName=e||"root",this.startElement(this.rootElementName),this.push("\n")}startElement(t){this.push("<"),this.push(t),this.push(">")}endElement(t){this.push("</"),this.push(t),this.push(">\n")}elementValue(t,e){this.startElement(t),this.push(function(t){return t.replace(/[<>&'"]/g,(function(t){switch(t){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case'"':return"""}}))}(`${e}`)),this.endElement(t)}_transform(t,e,s){if(t.__isStreamHeader)s();else{this.startElement(this.itemElementName),this.push("\n");for(const e of Object.keys(t))this.elementValue(e,t[e]);this.endElement(this.itemElementName),s()}}_final(t){this.endElement(this.rootElementName),t()}}t.exports=async function({fileName:t,encoding:e="utf-8",itemElementName:s,rootElementName:n}){return i.info(`DBGM-00144 Writing file ${t}`),[new h({itemElementName:s,rootElementName:n}),r.createWriteStream(t,e)]}},557:t=>{"use strict";t.exports=require("node-xml-stream-parser")},896:t=>{"use strict";t.exports=require("fs")},203:t=>{"use strict";t.exports=require("stream")}},e={},s=function s(r){var n=e[r];if(void 0!==n)return n.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,s),a.exports}(237);module.exports=s})();