enketo-transformer
Version:
Library that transforms ODK-compliant XForms into a format that Enketo can consume
1 lines • 3.59 kB
Source Map (JSON)
{"version":3,"file":"Node.cjs","sources":["../../../../src/dom/node/Node.ts"],"sourcesContent":["import type { Node } from 'libxmljs';\nimport { libxmljs } from 'libxslt';\nimport type { DOM } from '../abstract';\nimport { NodeTypes } from '../shared';\n\nconst { Element, Document } = libxmljs;\n\nObject.assign(libxmljs, {\n Node: NodeTypes,\n});\n\n/** @package */\nexport class DOMExtendedNode implements DOM.Node {\n get nodeName() {\n return (this as unknown as Node & DOMExtendedNode).name();\n }\n\n get nodeType() {\n const type = (this as unknown as Node & DOMExtendedNode).type();\n\n switch (type) {\n case 'attribute': {\n return NodeTypes.ATTRIBUTE_NODE;\n }\n\n case 'comment': {\n return NodeTypes.COMMENT_NODE;\n }\n\n case 'document': {\n return NodeTypes.DOCUMENT_NODE;\n }\n\n case 'element': {\n return NodeTypes.ELEMENT_NODE;\n }\n\n case 'text': {\n return NodeTypes.TEXT_NODE;\n }\n\n default: {\n throw new Error(`Unknown node type: `);\n }\n }\n }\n\n get ownerDocument() {\n if (this.nodeType === NodeTypes.DOCUMENT_NODE) {\n return this as unknown as Document;\n }\n\n return (this as unknown as DOMExtendedNode & Node).doc();\n }\n\n get parentElement() {\n return (\n this as unknown as DOMExtendedNode & Node\n ).parent() as Element | null;\n }\n\n get textContent(): string | null {\n return (this as unknown as DOMExtendedNode & Node).text();\n }\n\n set textContent(value: string) {\n (this as unknown as DOMExtendedNode & Node).text(value);\n }\n\n cloneNode<T extends Node>(\n this: DOMExtendedNode & T,\n deep = false\n ): DOMExtendedNode & T {\n return this.clone(deep);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-redeclare */\ntype Document = InstanceType<typeof Document>;\ntype Element = InstanceType<typeof Element>;\n/* eslint-enable @typescript-eslint/no-redeclare */\n\nconst { constructor: _, ...descriptors } = Object.getOwnPropertyDescriptors(\n DOMExtendedNode.prototype\n);\n\n[Element, Document].forEach((Constructor) => {\n Object.assign(Constructor, NodeTypes);\n Object.defineProperties(Constructor.prototype, descriptors);\n});\n"],"names":["libxmljs","NodeTypes"],"mappings":";;;;AAKA,MAAM,EAAE,SAAS,SAAa,IAAAA;AAE9B,OAAO,OAAOA,QAAAA,UAAU;AAAA,EACpB,MAAMC,OAAA;AACV,CAAC;AAGM,MAAM,gBAAoC;AAAA,EAC7C,IAAI,WAAW;AACX,WAAQ,KAA2C;EACvD;AAAA,EAEA,IAAI,WAAW;AACL,UAAA,OAAQ,KAA2C;AAEzD,YAAQ,MAAM;AAAA,MACV,KAAK,aAAa;AACd,eAAOA,OAAAA,UAAU;AAAA,MACrB;AAAA,MAEA,KAAK,WAAW;AACZ,eAAOA,OAAAA,UAAU;AAAA,MACrB;AAAA,MAEA,KAAK,YAAY;AACb,eAAOA,OAAAA,UAAU;AAAA,MACrB;AAAA,MAEA,KAAK,WAAW;AACZ,eAAOA,OAAAA,UAAU;AAAA,MACrB;AAAA,MAEA,KAAK,QAAQ;AACT,eAAOA,OAAAA,UAAU;AAAA,MACrB;AAAA,MAEA,SAAS;AACC,cAAA,IAAI,MAAM,qBAAqB;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAgB;AACZ,QAAA,KAAK,aAAaA,OAAA,UAAU,eAAe;AACpC,aAAA;AAAA,IACX;AAEA,WAAQ,KAA2C;EACvD;AAAA,EAEA,IAAI,gBAAgB;AAChB,WACI,KACF;EACN;AAAA,EAEA,IAAI,cAA6B;AAC7B,WAAQ,KAA2C;EACvD;AAAA,EAEA,IAAI,YAAY,OAAe;AAC1B,SAA2C,KAAK,KAAK;AAAA,EAC1D;AAAA,EAEA,UAEI,OAAO,OACY;AACZ,WAAA,KAAK,MAAM,IAAI;AAAA,EAC1B;AACJ;AAOA,MAAM,EAAE,aAAa,GAAG,GAAG,gBAAgB,OAAO;AAAA,EAC9C,gBAAgB;AACpB;AAEA,CAAC,SAAS,QAAQ,EAAE,QAAQ,CAAC,gBAAgB;AAClC,SAAA,OAAO,aAAaA,OAAAA,SAAS;AAC7B,SAAA,iBAAiB,YAAY,WAAW,WAAW;AAC9D,CAAC;;"}