{
  "version": 3,
  "sources": ["index.js", "sax-ts/sax.js", "lib/xml-utils/uncapitalize.js", "lib/parsers/parse-xml.js", "xml-loader.js", "html-loader.js", "lib/xml-utils/xml-utils.js"],
  "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport { XMLLoader } from \"./xml-loader.js\";\nexport { HTMLLoader } from \"./html-loader.js\";\nexport { SAXParser as SAXParser } from \"./sax-ts/sax.js\";\n// Utilities\nexport { convertXMLValueToArray, convertXMLFieldToArrayInPlace } from \"./lib/xml-utils/xml-utils.js\";\n// Experimental\nexport { uncapitalize as _uncapitalize, uncapitalizeKeys as _uncapitalizeKeys } from \"./lib/xml-utils/uncapitalize.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst DEFAULT_SAX_EVENTS = {\n    ontext: () => { },\n    onprocessinginstruction: () => { },\n    onsgmldeclaration: () => { },\n    ondoctype: () => { },\n    oncomment: () => { },\n    onopentagstart: () => { },\n    onattribute: () => { },\n    onopentag: () => { },\n    onclosetag: () => { },\n    onopencdata: () => { },\n    oncdata: () => { },\n    onclosecdata: () => { },\n    onerror: () => { },\n    onend: () => { },\n    onready: () => { },\n    onscript: () => { },\n    onopennamespace: () => { },\n    onclosenamespace: () => { }\n};\nconst DEFAULT_SAX_PARSER_OPTIONS = {\n    ...DEFAULT_SAX_EVENTS,\n    strict: false,\n    MAX_BUFFER_LENGTH: 64 * 1024,\n    lowercase: false,\n    lowercasetags: false,\n    noscript: false,\n    strictEntities: false,\n    xmlns: undefined,\n    position: undefined,\n    trim: undefined,\n    normalize: undefined\n};\nconst EVENTS = [\n    'text',\n    'processinginstruction',\n    'sgmldeclaration',\n    'doctype',\n    'comment',\n    'opentagstart',\n    'attribute',\n    'opentag',\n    'closetag',\n    'opencdata',\n    'cdata',\n    'closecdata',\n    'error',\n    'end',\n    'ready',\n    'script',\n    'opennamespace',\n    'closenamespace'\n];\nconst BUFFERS = [\n    'comment',\n    'sgmlDecl',\n    'textNode',\n    'tagName',\n    'doctype',\n    'procInstName',\n    'procInstBody',\n    'entity',\n    'attribName',\n    'attribValue',\n    'cdata',\n    'script'\n];\nconst nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\nconst nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\nconst entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\nconst entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\nexport const ENTITIES = {\n    amp: '&',\n    gt: '>',\n    lt: '<',\n    quot: '\"',\n    apos: \"'\",\n    AElig: 198,\n    Aacute: 193,\n    Acirc: 194,\n    Agrave: 192,\n    Aring: 197,\n    Atilde: 195,\n    Auml: 196,\n    Ccedil: 199,\n    ETH: 208,\n    Eacute: 201,\n    Ecirc: 202,\n    Egrave: 200,\n    Euml: 203,\n    Iacute: 205,\n    Icirc: 206,\n    Igrave: 204,\n    Iuml: 207,\n    Ntilde: 209,\n    Oacute: 211,\n    Ocirc: 212,\n    Ograve: 210,\n    Oslash: 216,\n    Otilde: 213,\n    Ouml: 214,\n    THORN: 222,\n    Uacute: 218,\n    Ucirc: 219,\n    Ugrave: 217,\n    Uuml: 220,\n    Yacute: 221,\n    aacute: 225,\n    acirc: 226,\n    aelig: 230,\n    agrave: 224,\n    aring: 229,\n    atilde: 227,\n    auml: 228,\n    ccedil: 231,\n    eacute: 233,\n    ecirc: 234,\n    egrave: 232,\n    eth: 240,\n    euml: 235,\n    iacute: 237,\n    icirc: 238,\n    igrave: 236,\n    iuml: 239,\n    ntilde: 241,\n    oacute: 243,\n    ocirc: 244,\n    ograve: 242,\n    oslash: 248,\n    otilde: 245,\n    ouml: 246,\n    szlig: 223,\n    thorn: 254,\n    uacute: 250,\n    ucirc: 251,\n    ugrave: 249,\n    uuml: 252,\n    yacute: 253,\n    yuml: 255,\n    copy: 169,\n    reg: 174,\n    nbsp: 160,\n    iexcl: 161,\n    cent: 162,\n    pound: 163,\n    curren: 164,\n    yen: 165,\n    brvbar: 166,\n    sect: 167,\n    uml: 168,\n    ordf: 170,\n    laquo: 171,\n    not: 172,\n    shy: 173,\n    macr: 175,\n    deg: 176,\n    plusmn: 177,\n    sup1: 185,\n    sup2: 178,\n    sup3: 179,\n    acute: 180,\n    micro: 181,\n    para: 182,\n    middot: 183,\n    cedil: 184,\n    ordm: 186,\n    raquo: 187,\n    frac14: 188,\n    frac12: 189,\n    frac34: 190,\n    iquest: 191,\n    times: 215,\n    divide: 247,\n    OElig: 338,\n    oelig: 339,\n    Scaron: 352,\n    scaron: 353,\n    Yuml: 376,\n    fnof: 402,\n    circ: 710,\n    tilde: 732,\n    Alpha: 913,\n    Beta: 914,\n    Gamma: 915,\n    Delta: 916,\n    Epsilon: 917,\n    Zeta: 918,\n    Eta: 919,\n    Theta: 920,\n    Iota: 921,\n    Kappa: 922,\n    Lambda: 923,\n    Mu: 924,\n    Nu: 925,\n    Xi: 926,\n    Omicron: 927,\n    Pi: 928,\n    Rho: 929,\n    Sigma: 931,\n    Tau: 932,\n    Upsilon: 933,\n    Phi: 934,\n    Chi: 935,\n    Psi: 936,\n    Omega: 937,\n    alpha: 945,\n    beta: 946,\n    gamma: 947,\n    delta: 948,\n    epsilon: 949,\n    zeta: 950,\n    eta: 951,\n    theta: 952,\n    iota: 953,\n    kappa: 954,\n    lambda: 955,\n    mu: 956,\n    nu: 957,\n    xi: 958,\n    omicron: 959,\n    pi: 960,\n    rho: 961,\n    sigmaf: 962,\n    sigma: 963,\n    tau: 964,\n    upsilon: 965,\n    phi: 966,\n    chi: 967,\n    psi: 968,\n    omega: 969,\n    thetasym: 977,\n    upsih: 978,\n    piv: 982,\n    ensp: 8194,\n    emsp: 8195,\n    thinsp: 8201,\n    zwnj: 8204,\n    zwj: 8205,\n    lrm: 8206,\n    rlm: 8207,\n    ndash: 8211,\n    mdash: 8212,\n    lsquo: 8216,\n    rsquo: 8217,\n    sbquo: 8218,\n    ldquo: 8220,\n    rdquo: 8221,\n    bdquo: 8222,\n    dagger: 8224,\n    Dagger: 8225,\n    bull: 8226,\n    hellip: 8230,\n    permil: 8240,\n    prime: 8242,\n    Prime: 8243,\n    lsaquo: 8249,\n    rsaquo: 8250,\n    oline: 8254,\n    frasl: 8260,\n    euro: 8364,\n    image: 8465,\n    weierp: 8472,\n    real: 8476,\n    trade: 8482,\n    alefsym: 8501,\n    larr: 8592,\n    uarr: 8593,\n    rarr: 8594,\n    darr: 8595,\n    harr: 8596,\n    crarr: 8629,\n    lArr: 8656,\n    uArr: 8657,\n    rArr: 8658,\n    dArr: 8659,\n    hArr: 8660,\n    forall: 8704,\n    part: 8706,\n    exist: 8707,\n    empty: 8709,\n    nabla: 8711,\n    isin: 8712,\n    notin: 8713,\n    ni: 8715,\n    prod: 8719,\n    sum: 8721,\n    minus: 8722,\n    lowast: 8727,\n    radic: 8730,\n    prop: 8733,\n    infin: 8734,\n    ang: 8736,\n    and: 8743,\n    or: 8744,\n    cap: 8745,\n    cup: 8746,\n    int: 8747,\n    there4: 8756,\n    sim: 8764,\n    cong: 8773,\n    asymp: 8776,\n    ne: 8800,\n    equiv: 8801,\n    le: 8804,\n    ge: 8805,\n    sub: 8834,\n    sup: 8835,\n    nsub: 8836,\n    sube: 8838,\n    supe: 8839,\n    oplus: 8853,\n    otimes: 8855,\n    perp: 8869,\n    sdot: 8901,\n    lceil: 8968,\n    rceil: 8969,\n    lfloor: 8970,\n    rfloor: 8971,\n    lang: 9001,\n    rang: 9002,\n    loz: 9674,\n    spades: 9824,\n    clubs: 9827,\n    hearts: 9829,\n    diams: 9830\n};\nObject.keys(ENTITIES).forEach((key) => {\n    const e = ENTITIES[key];\n    ENTITIES[key] = typeof e === 'number' ? String.fromCharCode(e) : e;\n});\n/**\n * Internal helper class\n */\nclass SAX {\n    EVENTS = EVENTS;\n    ENTITIES = {\n        // TODO: make it readonly, needed for entity-mega test\n        // amp, gt, lt, quot and apos are resolved to strings instead of numerical\n        // codes, IDK why\n        ...ENTITIES\n    };\n    XML_ENTITIES = {\n        amp: '&',\n        gt: '>',\n        lt: '<',\n        quot: '\"',\n        apos: \"'\"\n    };\n    S = 0;\n    opt;\n    trackPosition = false;\n    column = 0;\n    line = 0;\n    c = '';\n    error;\n    q = '';\n    bufferCheckPosition;\n    closed = false;\n    tags = [];\n    looseCase = '';\n    closedRoot = false;\n    sawRoot = false;\n    strict = false;\n    tag;\n    strictEntities;\n    state;\n    noscript = false;\n    attribList = [];\n    ns;\n    position = 0;\n    STATE = {\n        BEGIN: this.S++, // leading byte order mark or whitespace\n        BEGIN_WHITESPACE: this.S++, // leading whitespace\n        TEXT: this.S++, // general stuff\n        TEXT_ENTITY: this.S++, // &amp and such.\n        OPEN_WAKA: this.S++, // <\n        SGML_DECL: this.S++, // <!BLARG\n        SGML_DECL_QUOTED: this.S++, // <!BLARG foo \"bar\n        DOCTYPE: this.S++, // <!DOCTYPE\n        DOCTYPE_QUOTED: this.S++, // <!DOCTYPE \"//blah\n        DOCTYPE_DTD: this.S++, // <!DOCTYPE \"//blah\" [ ...\n        DOCTYPE_DTD_QUOTED: this.S++, // <!DOCTYPE \"//blah\" [ \"foo\n        COMMENT_STARTING: this.S++, // <!-\n        COMMENT: this.S++, // <!--\n        COMMENT_ENDING: this.S++, // <!-- blah -\n        COMMENT_ENDED: this.S++, // <!-- blah --\n        CDATA: this.S++, // <![CDATA[ something\n        CDATA_ENDING: this.S++, // ]\n        CDATA_ENDING_2: this.S++, // ]]\n        PROC_INST: this.S++, // <?hi\n        PROC_INST_BODY: this.S++, // <?hi there\n        PROC_INST_ENDING: this.S++, // <?hi \"there\" ?\n        OPEN_TAG: this.S++, // <strong\n        OPEN_TAG_SLASH: this.S++, // <strong /\n        ATTRIB: this.S++, // <a\n        ATTRIB_NAME: this.S++, // <a foo\n        ATTRIB_NAME_SAW_WHITE: this.S++, // <a foo _\n        ATTRIB_VALUE: this.S++, // <a foo=\n        ATTRIB_VALUE_QUOTED: this.S++, // <a foo=\"bar\n        ATTRIB_VALUE_CLOSED: this.S++, // <a foo=\"bar\"\n        ATTRIB_VALUE_UNQUOTED: this.S++, // <a foo=bar\n        ATTRIB_VALUE_ENTITY_Q: this.S++, // <foo bar=\"&quot;\"\n        ATTRIB_VALUE_ENTITY_U: this.S++, // <foo bar=&quot\n        CLOSE_TAG: this.S++, // </a\n        CLOSE_TAG_SAW_WHITE: this.S++, // </a   >\n        SCRIPT: this.S++, // <script> ...\n        SCRIPT_ENDING: this.S++ // <script> ... <\n    };\n    BUFFERS = BUFFERS;\n    // private parser: (strict: boolean, opt: any) => SAXParser;\n    CDATA = '[CDATA[';\n    DOCTYPE = 'DOCTYPE';\n    XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n    XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/';\n    rootNS = {\n        xml: this.XML_NAMESPACE,\n        xmlns: this.XMLNS_NAMESPACE\n    };\n    comment;\n    sgmlDecl;\n    textNode = '';\n    tagName;\n    doctype;\n    procInstName;\n    procInstBody;\n    entity = '';\n    attribName;\n    attribValue;\n    cdata = '';\n    script = '';\n    startTagPosition = 0;\n    constructor() {\n        this.S = 0;\n        for (const s in this.STATE) {\n            if (this.STATE.hasOwnProperty(s)) {\n                this.STATE[this.STATE[s]] = s;\n            }\n        }\n        // shorthand\n        this.S = this.STATE;\n    }\n    static charAt(chunk, i) {\n        let result = '';\n        if (i < chunk.length) {\n            result = chunk.charAt(i);\n        }\n        return result;\n    }\n    static isWhitespace(c) {\n        return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t';\n    }\n    static isQuote(c) {\n        return c === '\"' || c === \"'\";\n    }\n    static isAttribEnd(c) {\n        return c === '>' || SAX.isWhitespace(c);\n    }\n    static isMatch(regex, c) {\n        return regex.test(c);\n    }\n    static notMatch(regex, c) {\n        return !SAX.isMatch(regex, c);\n    }\n    static qname(name, attribute) {\n        const i = name.indexOf(':');\n        const qualName = i < 0 ? ['', name] : name.split(':');\n        let prefix = qualName[0];\n        let local = qualName[1];\n        // <x \"xmlns\"=\"http://foo\">\n        if (attribute && name === 'xmlns') {\n            prefix = 'xmlns';\n            local = '';\n        }\n        return { prefix, local };\n    }\n    write(chunk) {\n        if (this.error) {\n            throw this.error;\n        }\n        if (this.closed) {\n            return this.errorFunction('Cannot write after close. Assign an onready handler.');\n        }\n        if (chunk === null) {\n            return this.end();\n        }\n        if (typeof chunk === 'object') {\n            chunk = chunk.toString();\n        }\n        let i = 0;\n        let c;\n        while (true) {\n            c = SAX.charAt(chunk, i++);\n            this.c = c;\n            if (!c) {\n                break;\n            }\n            if (this.trackPosition) {\n                this.position++;\n                if (c === '\\n') {\n                    this.line++;\n                    this.column = 0;\n                }\n                else {\n                    this.column++;\n                }\n            }\n            switch (this.state) {\n                case this.S.BEGIN:\n                    this.state = this.S.BEGIN_WHITESPACE;\n                    if (c === '\\uFEFF') {\n                        continue;\n                    }\n                    this.beginWhiteSpace(c);\n                    continue;\n                case this.S.BEGIN_WHITESPACE:\n                    this.beginWhiteSpace(c);\n                    continue;\n                case this.S.TEXT:\n                    if (this.sawRoot && !this.closedRoot) {\n                        const starti = i - 1;\n                        while (c && c !== '<' && c !== '&') {\n                            c = SAX.charAt(chunk, i++);\n                            if (c && this.trackPosition) {\n                                this.position++;\n                                if (c === '\\n') {\n                                    this.line++;\n                                    this.column = 0;\n                                }\n                                else {\n                                    this.column++;\n                                }\n                            }\n                        }\n                        this.textNode += chunk.substring(starti, i - 1);\n                    }\n                    if (c === '<' && !(this.sawRoot && this.closedRoot && !this.strict)) {\n                        this.state = this.S.OPEN_WAKA;\n                        this.startTagPosition = this.position;\n                    }\n                    else {\n                        if (!SAX.isWhitespace(c) && (!this.sawRoot || this.closedRoot)) {\n                            this.strictFail('Text data outside of root node.');\n                        }\n                        if (c === '&') {\n                            this.state = this.S.TEXT_ENTITY;\n                        }\n                        else {\n                            this.textNode += c;\n                        }\n                    }\n                    continue;\n                case this.S.SCRIPT:\n                    // only non-strict\n                    if (c === '<') {\n                        this.state = this.S.SCRIPT_ENDING;\n                    }\n                    else {\n                        this.script += c;\n                    }\n                    continue;\n                case this.S.SCRIPT_ENDING:\n                    if (c === '/') {\n                        this.state = this.S.CLOSE_TAG;\n                    }\n                    else {\n                        this.script += `<${c}`;\n                        this.state = this.S.SCRIPT;\n                    }\n                    continue;\n                case this.S.OPEN_WAKA:\n                    // either a /, ?, !, or text is coming next.\n                    if (c === '!') {\n                        this.state = this.S.SGML_DECL;\n                        this.sgmlDecl = '';\n                    }\n                    else if (SAX.isWhitespace(c)) {\n                        // wait for it...\n                    }\n                    else if (SAX.isMatch(nameStart, c)) {\n                        this.state = this.S.OPEN_TAG;\n                        this.tagName = c;\n                    }\n                    else if (c === '/') {\n                        this.state = this.S.CLOSE_TAG;\n                        this.tagName = '';\n                    }\n                    else if (c === '?') {\n                        this.state = this.S.PROC_INST;\n                        this.procInstName = this.procInstBody = '';\n                    }\n                    else {\n                        this.strictFail('Unencoded <');\n                        // if there was some whitespace, then add that in.\n                        if (this.startTagPosition + 1 < this.position) {\n                            const pad = this.position - this.startTagPosition;\n                            c = new Array(pad).join(' ') + c;\n                        }\n                        this.textNode += `<${c}`;\n                        this.state = this.S.TEXT;\n                    }\n                    continue;\n                case this.S.SGML_DECL:\n                    if ((this.sgmlDecl + c).toUpperCase() === this.CDATA) {\n                        this.emitNode('onopencdata');\n                        this.state = this.S.CDATA;\n                        this.sgmlDecl = '';\n                        this.cdata = '';\n                    }\n                    else if (this.sgmlDecl + c === '--') {\n                        this.state = this.S.COMMENT;\n                        this.comment = '';\n                        this.sgmlDecl = '';\n                    }\n                    else if ((this.sgmlDecl + c).toUpperCase() === this.DOCTYPE) {\n                        this.state = this.S.DOCTYPE;\n                        if (this.doctype || this.sawRoot) {\n                            this.strictFail('Inappropriately located doctype declaration');\n                        }\n                        this.doctype = '';\n                        this.sgmlDecl = '';\n                    }\n                    else if (c === '>') {\n                        this.emitNode('onsgmldeclaration', this.sgmlDecl);\n                        this.sgmlDecl = '';\n                        this.state = this.S.TEXT;\n                    }\n                    else if (SAX.isQuote(c)) {\n                        this.state = this.S.SGML_DECL_QUOTED;\n                        this.sgmlDecl += c;\n                    }\n                    else {\n                        this.sgmlDecl += c;\n                    }\n                    continue;\n                case this.S.SGML_DECL_QUOTED:\n                    if (c === this.q) {\n                        this.state = this.S.SGML_DECL;\n                        this.q = '';\n                    }\n                    this.sgmlDecl += c;\n                    continue;\n                case this.S.DOCTYPE:\n                    if (c === '>') {\n                        this.state = this.S.TEXT;\n                        this.emitNode('ondoctype', this.doctype);\n                        this.doctype = true; // just remember that we saw it.\n                    }\n                    else {\n                        this.doctype += c;\n                        if (c === '[') {\n                            this.state = this.S.DOCTYPE_DTD;\n                        }\n                        else if (SAX.isQuote(c)) {\n                            this.state = this.S.DOCTYPE_QUOTED;\n                            this.q = c;\n                        }\n                    }\n                    continue;\n                case this.S.DOCTYPE_QUOTED:\n                    this.doctype += c;\n                    if (c === this.q) {\n                        this.q = '';\n                        this.state = this.S.DOCTYPE;\n                    }\n                    continue;\n                case this.S.DOCTYPE_DTD:\n                    this.doctype += c;\n                    if (c === ']') {\n                        this.state = this.S.DOCTYPE;\n                    }\n                    else if (SAX.isQuote(c)) {\n                        this.state = this.S.DOCTYPE_DTD_QUOTED;\n                        this.q = c;\n                    }\n                    continue;\n                case this.S.DOCTYPE_DTD_QUOTED:\n                    this.doctype += c;\n                    if (c === this.q) {\n                        this.state = this.S.DOCTYPE_DTD;\n                        this.q = '';\n                    }\n                    continue;\n                case this.S.COMMENT:\n                    if (c === '-') {\n                        this.state = this.S.COMMENT_ENDING;\n                    }\n                    else {\n                        this.comment += c;\n                    }\n                    continue;\n                case this.S.COMMENT_ENDING:\n                    if (c === '-') {\n                        this.state = this.S.COMMENT_ENDED;\n                        this.comment = this.textApplyOptions(this.comment);\n                        if (this.comment) {\n                            this.emitNode('oncomment', this.comment);\n                        }\n                        this.comment = '';\n                    }\n                    else {\n                        this.comment += `-${c}`;\n                        this.state = this.S.COMMENT;\n                    }\n                    continue;\n                case this.S.COMMENT_ENDED:\n                    if (c !== '>') {\n                        this.strictFail('Malformed comment');\n                        // allow <!-- blah -- bloo --> in non-strict mode,\n                        // which is a comment of \" blah -- bloo \"\n                        this.comment += `--${c}`;\n                        this.state = this.S.COMMENT;\n                    }\n                    else {\n                        this.state = this.S.TEXT;\n                    }\n                    continue;\n                case this.S.CDATA:\n                    if (c === ']') {\n                        this.state = this.S.CDATA_ENDING;\n                    }\n                    else {\n                        this.cdata += c;\n                    }\n                    continue;\n                case this.S.CDATA_ENDING:\n                    if (c === ']') {\n                        this.state = this.S.CDATA_ENDING_2;\n                    }\n                    else {\n                        this.cdata += `]${c}`;\n                        this.state = this.S.CDATA;\n                    }\n                    continue;\n                case this.S.CDATA_ENDING_2:\n                    if (c === '>') {\n                        if (this.cdata) {\n                            this.emitNode('oncdata', this.cdata);\n                        }\n                        this.emitNode('onclosecdata');\n                        this.cdata = '';\n                        this.state = this.S.TEXT;\n                    }\n                    else if (c === ']') {\n                        this.cdata += ']';\n                    }\n                    else {\n                        this.cdata += `]]${c}`;\n                        this.state = this.S.CDATA;\n                    }\n                    continue;\n                case this.S.PROC_INST:\n                    if (c === '?') {\n                        this.state = this.S.PROC_INST_ENDING;\n                    }\n                    else if (SAX.isWhitespace(c)) {\n                        this.state = this.S.PROC_INST_BODY;\n                    }\n                    else {\n                        this.procInstName += c;\n                    }\n                    continue;\n                case this.S.PROC_INST_BODY:\n                    if (!this.procInstBody && SAX.isWhitespace(c)) {\n                        continue;\n                    }\n                    else if (c === '?') {\n                        this.state = this.S.PROC_INST_ENDING;\n                    }\n                    else {\n                        this.procInstBody += c;\n                    }\n                    continue;\n                case this.S.PROC_INST_ENDING:\n                    if (c === '>') {\n                        this.emitNode('onprocessinginstruction', {\n                            name: this.procInstName,\n                            body: this.procInstBody\n                        });\n                        this.procInstName = this.procInstBody = '';\n                        this.state = this.S.TEXT;\n                    }\n                    else {\n                        this.procInstBody += `?${c}`;\n                        this.state = this.S.PROC_INST_BODY;\n                    }\n                    continue;\n                case this.S.OPEN_TAG:\n                    if (SAX.isMatch(nameBody, c)) {\n                        this.tagName += c;\n                    }\n                    else {\n                        this.newTag();\n                        if (c === '>') {\n                            this.openTag();\n                        }\n                        else if (c === '/') {\n                            this.state = this.S.OPEN_TAG_SLASH;\n                        }\n                        else {\n                            if (!SAX.isWhitespace(c)) {\n                                this.strictFail('Invalid character in tag name');\n                            }\n                            this.state = this.S.ATTRIB;\n                        }\n                    }\n                    continue;\n                case this.S.OPEN_TAG_SLASH:\n                    if (c === '>') {\n                        this.openTag(true);\n                        this.closeTag();\n                    }\n                    else {\n                        this.strictFail('Forward-slash in opening tag not followed by >');\n                        this.state = this.S.ATTRIB;\n                    }\n                    continue;\n                case this.S.ATTRIB:\n                    // haven't read the attribute name yet.\n                    if (SAX.isWhitespace(c)) {\n                        continue;\n                    }\n                    else if (c === '>') {\n                        this.openTag();\n                    }\n                    else if (c === '/') {\n                        this.state = this.S.OPEN_TAG_SLASH;\n                    }\n                    else if (SAX.isMatch(nameStart, c)) {\n                        this.attribName = c;\n                        this.attribValue = '';\n                        this.state = this.S.ATTRIB_NAME;\n                    }\n                    else {\n                        this.strictFail('Invalid attribute name');\n                    }\n                    continue;\n                case this.S.ATTRIB_NAME:\n                    if (c === '=') {\n                        this.state = this.S.ATTRIB_VALUE;\n                    }\n                    else if (c === '>') {\n                        this.strictFail('Attribute without value');\n                        this.attribValue = this.attribName;\n                        this.attrib();\n                        this.openTag();\n                    }\n                    else if (SAX.isWhitespace(c)) {\n                        this.state = this.S.ATTRIB_NAME_SAW_WHITE;\n                    }\n                    else if (SAX.isMatch(nameBody, c)) {\n                        this.attribName += c;\n                    }\n                    else {\n                        this.strictFail('Invalid attribute name');\n                    }\n                    continue;\n                case this.S.ATTRIB_NAME_SAW_WHITE:\n                    if (c === '=') {\n                        this.state = this.S.ATTRIB_VALUE;\n                    }\n                    else if (SAX.isWhitespace(c)) {\n                        continue;\n                    }\n                    else {\n                        this.strictFail('Attribute without value');\n                        this.tag.attributes[this.attribName] = '';\n                        this.attribValue = '';\n                        this.emitNode('onattribute', {\n                            name: this.attribName,\n                            value: ''\n                        });\n                        this.attribName = '';\n                        if (c === '>') {\n                            this.openTag();\n                        }\n                        else if (SAX.isMatch(nameStart, c)) {\n                            this.attribName = c;\n                            this.state = this.S.ATTRIB_NAME;\n                        }\n                        else {\n                            this.strictFail('Invalid attribute name');\n                            this.state = this.S.ATTRIB;\n                        }\n                    }\n                    continue;\n                case this.S.ATTRIB_VALUE:\n                    if (SAX.isWhitespace(c)) {\n                        continue;\n                    }\n                    else if (SAX.isQuote(c)) {\n                        this.q = c;\n                        this.state = this.S.ATTRIB_VALUE_QUOTED;\n                    }\n                    else {\n                        this.strictFail('Unquoted attribute value');\n                        this.state = this.S.ATTRIB_VALUE_UNQUOTED;\n                        this.attribValue = c;\n                    }\n                    continue;\n                case this.S.ATTRIB_VALUE_QUOTED:\n                    if (c !== this.q) {\n                        if (c === '&') {\n                            this.state = this.S.ATTRIB_VALUE_ENTITY_Q;\n                        }\n                        else {\n                            this.attribValue += c;\n                        }\n                        continue;\n                    }\n                    this.attrib();\n                    this.q = '';\n                    this.state = this.S.ATTRIB_VALUE_CLOSED;\n                    continue;\n                case this.S.ATTRIB_VALUE_CLOSED:\n                    if (SAX.isWhitespace(c)) {\n                        this.state = this.S.ATTRIB;\n                    }\n                    else if (c === '>') {\n                        this.openTag();\n                    }\n                    else if (c === '/') {\n                        this.state = this.S.OPEN_TAG_SLASH;\n                    }\n                    else if (SAX.isMatch(nameStart, c)) {\n                        this.strictFail('No whitespace between attributes');\n                        this.attribName = c;\n                        this.attribValue = '';\n                        this.state = this.S.ATTRIB_NAME;\n                    }\n                    else {\n                        this.strictFail('Invalid attribute name');\n                    }\n                    continue;\n                case this.S.ATTRIB_VALUE_UNQUOTED:\n                    if (!SAX.isAttribEnd(c)) {\n                        if (c === '&') {\n                            this.state = this.S.ATTRIB_VALUE_ENTITY_U;\n                        }\n                        else {\n                            this.attribValue += c;\n                        }\n                        continue;\n                    }\n                    this.attrib();\n                    if (c === '>') {\n                        this.openTag();\n                    }\n                    else {\n                        this.state = this.S.ATTRIB;\n                    }\n                    continue;\n                case this.S.CLOSE_TAG:\n                    if (!this.tagName) {\n                        if (SAX.isWhitespace(c)) {\n                            continue;\n                        }\n                        else if (SAX.notMatch(nameStart, c)) {\n                            if (this.script) {\n                                this.script += `</${c}`;\n                                this.state = this.S.SCRIPT;\n                            }\n                            else {\n                                this.strictFail('Invalid tagname in closing tag.');\n                            }\n                        }\n                        else {\n                            this.tagName = c;\n                        }\n                    }\n                    else if (c === '>') {\n                        this.closeTag();\n                    }\n                    else if (SAX.isMatch(nameBody, c)) {\n                        this.tagName += c;\n                    }\n                    else if (this.script) {\n                        this.script += `</${this.tagName}`;\n                        this.tagName = '';\n                        this.state = this.S.SCRIPT;\n                    }\n                    else {\n                        if (!SAX.isWhitespace(c)) {\n                            this.strictFail('Invalid tagname in closing tag');\n                        }\n                        this.state = this.S.CLOSE_TAG_SAW_WHITE;\n                    }\n                    continue;\n                case this.S.CLOSE_TAG_SAW_WHITE:\n                    if (SAX.isWhitespace(c)) {\n                        continue;\n                    }\n                    if (c === '>') {\n                        this.closeTag();\n                    }\n                    else {\n                        this.strictFail('Invalid characters in closing tag');\n                    }\n                    continue;\n                case this.S.TEXT_ENTITY:\n                case this.S.ATTRIB_VALUE_ENTITY_Q:\n                case this.S.ATTRIB_VALUE_ENTITY_U:\n                    let returnState;\n                    let buffer;\n                    switch (this.state) {\n                        case this.S.TEXT_ENTITY:\n                            returnState = this.S.TEXT;\n                            buffer = 'textNode';\n                            break;\n                        case this.S.ATTRIB_VALUE_ENTITY_Q:\n                            returnState = this.S.ATTRIB_VALUE_QUOTED;\n                            buffer = 'attribValue';\n                            break;\n                        case this.S.ATTRIB_VALUE_ENTITY_U:\n                            returnState = this.S.ATTRIB_VALUE_UNQUOTED;\n                            buffer = 'attribValue';\n                            break;\n                        default:\n                            throw new Error(`Unknown state: ${this.state}`);\n                    }\n                    if (c === ';') {\n                        this[buffer] += this.parseEntity();\n                        this.entity = '';\n                        this.state = returnState;\n                    }\n                    else if (SAX.isMatch(this.entity.length ? entityBody : entityStart, c)) {\n                        this.entity += c;\n                    }\n                    else {\n                        this.strictFail('Invalid character in entity name');\n                        this[buffer] += `&${this.entity}${c}`;\n                        this.entity = '';\n                        this.state = returnState;\n                    }\n                    continue;\n                default:\n                    throw new Error(`Unknown state: ${this.state}`);\n            }\n        } // while\n        if (this.position >= this.bufferCheckPosition) {\n            this.checkBufferLength();\n        }\n        return this;\n    }\n    emit(event, data) {\n        if (this.events.hasOwnProperty(event)) {\n            const eventName = event.replace(/^on/, '');\n            this.events[event](data, eventName, this);\n        }\n    }\n    clearBuffers() {\n        for (let i = 0, l = this.BUFFERS.length; i < l; i++) {\n            this[this[i]] = '';\n        }\n    }\n    flushBuffers() {\n        this.closeText();\n        if (this.cdata !== '') {\n            this.emitNode('oncdata', this.cdata);\n            this.cdata = '';\n        }\n        if (this.script !== '') {\n            this.emitNode('onscript', this.script);\n            this.script = '';\n        }\n    }\n    end() {\n        if (this.sawRoot && !this.closedRoot)\n            this.strictFail('Unclosed root tag');\n        if (this.state !== this.S.BEGIN &&\n            this.state !== this.S.BEGIN_WHITESPACE &&\n            this.state !== this.S.TEXT) {\n            this.errorFunction('Unexpected end');\n        }\n        this.closeText();\n        this.c = '';\n        this.closed = true;\n        this.emit('onend');\n        return new SAXParser(this.opt);\n    }\n    errorFunction(er) {\n        this.closeText();\n        if (this.trackPosition) {\n            er += `\\nLine: ${this.line}\\nColumn: ${this.column}\\nChar: ${this.c}`;\n        }\n        const error = new Error(er);\n        this.error = error;\n        this.emit('onerror', error);\n        return this;\n    }\n    attrib() {\n        if (!this.strict) {\n            this.attribName = this.attribName[this.looseCase]();\n        }\n        if (this.attribList.indexOf(this.attribName) !== -1 ||\n            this.tag.attributes.hasOwnProperty(this.attribName)) {\n            this.attribName = this.attribValue = '';\n            return;\n        }\n        if (this.opt.xmlns) {\n            const qn = SAX.qname(this.attribName, true);\n            const prefix = qn.prefix;\n            const local = qn.local;\n            if (prefix === 'xmlns') {\n                // namespace binding attribute. push the binding into scope\n                if (local === 'xml' && this.attribValue !== this.XML_NAMESPACE) {\n                    this.strictFail(`xml: prefix must be bound to ${this.XML_NAMESPACE}\\n` + `Actual: ${this.attribValue}`);\n                }\n                else if (local === 'xmlns' && this.attribValue !== this.XMLNS_NAMESPACE) {\n                    this.strictFail(`xmlns: prefix must be bound to ${this.XMLNS_NAMESPACE}\\n` +\n                        `Actual: ${this.attribValue}`);\n                }\n                else {\n                    const tag = this.tag;\n                    const parent = this.tags[this.tags.length - 1] || this;\n                    if (tag.ns === parent.ns) {\n                        tag.ns = Object.create(parent.ns);\n                    }\n                    tag.ns[local] = this.attribValue;\n                }\n            }\n            // defer onattribute events until all attributes have been seen\n            // so any new bindings can take effect. preserve attribute order\n            // so deferred events can be emitted in document order\n            this.attribList.push([this.attribName, this.attribValue]);\n        }\n        else {\n            // in non-xmlns mode, we can emit the event right away\n            this.tag.attributes[this.attribName] = this.attribValue;\n            this.emitNode('onattribute', {\n                name: this.attribName,\n                value: this.attribValue\n            });\n        }\n        this.attribName = this.attribValue = '';\n    }\n    newTag() {\n        if (!this.strict)\n            this.tagName = this.tagName[this.looseCase]();\n        const parent = this.tags[this.tags.length - 1] || this;\n        const tag = (this.tag = { name: this.tagName, attributes: {} });\n        // will be overridden if tag contains an xmlns=\"foo\" or xmlns:foo=\"bar\"\n        if (this.opt.xmlns) {\n            tag.ns = parent.ns;\n        }\n        this.attribList.length = 0;\n        this.emitNode('onopentagstart', tag);\n    }\n    parseEntity() {\n        let entity = this.entity;\n        const entityLC = entity.toLowerCase();\n        let num = NaN;\n        let numStr = '';\n        if (this.ENTITIES[entity]) {\n            return this.ENTITIES[entity];\n        }\n        if (this.ENTITIES[entityLC]) {\n            return this.ENTITIES[entityLC];\n        }\n        entity = entityLC;\n        if (entity.charAt(0) === '#') {\n            if (entity.charAt(1) === 'x') {\n                entity = entity.slice(2);\n                // TODO: remove tslint:disable\n                // tslint:disable-next-line\n                num = parseInt(entity, 16);\n                numStr = num.toString(16);\n            }\n            else {\n                entity = entity.slice(1);\n                // TODO: remove tslint:disable\n                // tslint:disable-next-line\n                num = parseInt(entity, 10);\n                numStr = num.toString(10);\n            }\n        }\n        entity = entity.replace(/^0+/, '');\n        if (isNaN(num) || numStr.toLowerCase() !== entity) {\n            this.strictFail('Invalid character entity');\n            return `&${this.entity};`;\n        }\n        return String.fromCodePoint(num);\n    }\n    beginWhiteSpace(c) {\n        if (c === '<') {\n            this.state = this.S.OPEN_WAKA;\n            this.startTagPosition = this.position;\n        }\n        else if (!SAX.isWhitespace(c)) {\n            // have to process this as a text node.\n            // weird, but happens.\n            this.strictFail('Non-whitespace before first tag.');\n            this.textNode = c;\n            this.state = this.S.TEXT;\n        }\n        else {\n        }\n    }\n    strictFail(message) {\n        if (typeof this !== 'object' || !(this instanceof SAXParser)) {\n            throw new Error('bad call to strictFail');\n        }\n        if (this.strict) {\n            this.errorFunction(message);\n        }\n    }\n    textApplyOptions(text) {\n        if (this.opt.trim)\n            text = text.trim();\n        if (this.opt.normalize)\n            text = text.replace(/\\s+/g, ' ');\n        return text;\n    }\n    emitNode(nodeType, data) {\n        if (this.textNode)\n            this.closeText();\n        this.emit(nodeType, data);\n    }\n    closeText() {\n        this.textNode = this.textApplyOptions(this.textNode);\n        // TODO: figure out why this.textNode can be \"\" and \"undefined\"\n        if (this.textNode !== undefined && this.textNode !== '' && this.textNode !== 'undefined') {\n            this.emit('ontext', this.textNode);\n        }\n        this.textNode = '';\n    }\n    checkBufferLength() {\n        const maxAllowed = Math.max(this.opt.MAX_BUFFER_LENGTH, 10);\n        let maxActual = 0;\n        for (let i = 0, l = this.BUFFERS.length; i < l; i++) {\n            const len = this[this.BUFFERS[i]]?.length || 0;\n            if (len > maxAllowed) {\n                // Text/cdata nodes can get big, and since they're buffered,\n                // we can get here under normal conditions.\n                // Avoid issues by emitting the text node now,\n                // so at least it won't get any bigger.\n                switch (this.BUFFERS[i]) {\n                    case 'textNode':\n                        this.closeText();\n                        break;\n                    case 'cdata':\n                        this.emitNode('oncdata', this.cdata);\n                        this.cdata = '';\n                        break;\n                    case 'script':\n                        this.emitNode('onscript', this.script);\n                        this.script = '';\n                        break;\n                    default:\n                        this.errorFunction(`Max buffer length exceeded: ${this.BUFFERS[i]}`);\n                }\n            }\n            maxActual = Math.max(maxActual, len);\n        }\n        // schedule the next check for the earliest possible buffer overrun.\n        const m = this.opt.MAX_BUFFER_LENGTH - maxActual;\n        this.bufferCheckPosition = m + this.position;\n    }\n    openTag(selfClosing) {\n        if (this.opt.xmlns) {\n            // emit namespace binding events\n            const tag = this.tag;\n            // add namespace info to tag\n            const qn = SAX.qname(this.tagName);\n            tag.prefix = qn.prefix;\n            tag.local = qn.local;\n            tag.uri = tag.ns[qn.prefix] || '';\n            if (tag.prefix && !tag.uri) {\n                this.strictFail(`Unbound namespace prefix: ${JSON.stringify(this.tagName)}`);\n                tag.uri = qn.prefix;\n            }\n            const parent = this.tags[this.tags.length - 1] || this;\n            if (tag.ns && parent.ns !== tag.ns) {\n                const that = this;\n                Object.keys(tag.ns).forEach((p) => {\n                    that.emitNode('onopennamespace', {\n                        prefix: p,\n                        uri: tag.ns[p]\n                    });\n                });\n            }\n            // handle deferred onattribute events\n            // Note: do not apply default ns to attributes:\n            //   http://www.w3.org/TR/REC-xml-names/#defaulting\n            for (let i = 0, l = this.attribList.length; i < l; i++) {\n                const nv = this.attribList[i];\n                const name = nv[0];\n                const value = nv[1];\n                const qualName = SAX.qname(name, true);\n                const prefix = qualName.prefix;\n                const local = qualName.local;\n                const uri = prefix === '' ? '' : tag.ns[prefix] || '';\n                const a = {\n                    name,\n                    value,\n                    prefix,\n                    local,\n                    uri\n                };\n                // if there's any attributes with an undefined namespace,\n                // then fail on them now.\n                if (prefix && prefix !== 'xmlns' && !uri) {\n                    this.strictFail(`Unbound namespace prefix: ${JSON.stringify(prefix)}`);\n                    a.uri = prefix;\n                }\n                this.tag.attributes[name] = a;\n                this.emitNode('onattribute', a);\n            }\n            this.attribList.length = 0;\n        }\n        this.tag.isSelfClosing = Boolean(selfClosing);\n        // process the tag\n        this.sawRoot = true;\n        this.tags.push(this.tag);\n        this.emitNode('onopentag', this.tag);\n        if (!selfClosing) {\n            // special case for <script> in non-strict mode.\n            if (!this.noscript && this.tagName.toLowerCase() === 'script') {\n                this.state = this.S.SCRIPT;\n            }\n            else {\n                this.state = this.S.TEXT;\n            }\n            this.tag = null;\n            this.tagName = '';\n        }\n        this.attribName = this.attribValue = '';\n        this.attribList.length = 0;\n    }\n    closeTag() {\n        if (!this.tagName) {\n            this.strictFail('Weird empty close tag.');\n            this.textNode += '</>';\n            this.state = this.S.TEXT;\n            return;\n        }\n        if (this.script) {\n            if (this.tagName !== 'script') {\n                this.script += `</${this.tagName}>`;\n                this.tagName = '';\n                this.state = this.S.SCRIPT;\n                return;\n            }\n            this.emitNode('onscript', this.script);\n            this.script = '';\n        }\n        // first make sure that the closing tag actually exists.\n        // <a><b></c></b></a> will close everything, otherwise.\n        let t = this.tags.length;\n        let tagName = this.tagName;\n        if (!this.strict) {\n            tagName = tagName[this.looseCase]();\n        }\n        while (t--) {\n            const close = this.tags[t];\n            if (close.name !== tagName) {\n                // fail the first time in strict mode\n                this.strictFail('Unexpected close tag');\n            }\n            else {\n                break;\n            }\n        }\n        // didn't find it.  we already failed for strict, so just abort.\n        if (t < 0) {\n            this.strictFail(`Unmatched closing tag: ${this.tagName}`);\n            this.textNode += `</${this.tagName}>`;\n            this.state = this.S.TEXT;\n            return;\n        }\n        this.tagName = tagName;\n        let s = this.tags.length;\n        while (s-- > t) {\n            const tag = (this.tag = this.tags.pop());\n            this.tagName = this.tag.name;\n            this.emitNode('onclosetag', this.tagName);\n            const x = {};\n            for (const i in tag.ns) {\n                if (tag.ns.hasOwnProperty(i)) {\n                    x[i] = tag.ns[i];\n                }\n            }\n            const parent = this.tags[this.tags.length - 1] || this;\n            if (this.opt.xmlns && tag.ns !== parent.ns) {\n                // remove namespace bindings introduced by tag\n                const that = this;\n                Object.keys(tag.ns).forEach((p) => {\n                    const n = tag.ns[p];\n                    that.emitNode('onclosenamespace', { prefix: p, uri: n });\n                });\n            }\n        }\n        if (t === 0)\n            this.closedRoot = true;\n        this.tagName = this.attribValue = this.attribName = '';\n        this.attribList.length = 0;\n        this.state = this.S.TEXT;\n    }\n}\n/**\n *\n * @todo Weird inheritance, with some variables initialized in subclass\n */\nexport class SAXParser extends SAX {\n    static ENTITIES = ENTITIES;\n    opt = DEFAULT_SAX_PARSER_OPTIONS;\n    events = DEFAULT_SAX_EVENTS;\n    constructor(opt) {\n        super();\n        this.clearBuffers();\n        this.opt = opt = { ...this.opt, ...opt };\n        this.events = { ...this.events, ...opt };\n        this.q = this.c = '';\n        this.opt.lowercase = this.opt.lowercase || this.opt.lowercasetags;\n        this.bufferCheckPosition = this.opt.MAX_BUFFER_LENGTH;\n        this.looseCase = this.opt.lowercase ? 'toLowerCase' : 'toUpperCase';\n        this.tags = [];\n        this.closed = this.closedRoot = this.sawRoot = false;\n        this.tag = this.error = null;\n        this.strict = Boolean(this.opt.strict);\n        this.noscript = Boolean(this.opt.strict || this.opt.noscript);\n        this.state = this.S.BEGIN;\n        this.strictEntities = this.opt.strictEntities;\n        this.ENTITIES = this.strictEntities\n            ? Object.create(this.XML_ENTITIES)\n            : Object.create(this.ENTITIES);\n        this.attribList = [];\n        // namespaces form a prototype chain.\n        // it always points at the current tag,\n        // which protos to its parent tag.\n        if (this.opt.xmlns) {\n            this.ns = Object.create(this.rootNS);\n        }\n        // mostly just for error reporting\n        this.trackPosition = this.opt.position !== false;\n        if (this.trackPosition) {\n            this.position = this.line = this.column = 0;\n        }\n        this.emit('onready');\n    }\n    resume() {\n        this.error = null;\n        return this;\n    }\n    close() {\n        return this.write(null);\n    }\n    flush() {\n        this.flushBuffers();\n    }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Uncapitalize first letter of a string\n * @param str\n * @returns\n */\nexport function uncapitalize(str) {\n    return typeof str === 'string' ? str.charAt(0).toLowerCase() + str.slice(1) : str;\n}\n/**\n * Recursively uncapitalize all keys in a nested object\n * @param object\n * @returns\n */\nexport function uncapitalizeKeys(object) {\n    if (Array.isArray(object)) {\n        return object.map((element) => uncapitalizeKeys(element));\n    }\n    if (object && typeof object === 'object') {\n        const newObject = {};\n        for (const [key, value] of Object.entries(object)) {\n            newObject[uncapitalize(key)] = uncapitalizeKeys(value);\n        }\n        return newObject;\n    }\n    return object;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { StreamingXMLParser } from \"./streaming-xml-parser.js\";\nimport { uncapitalizeKeys } from \"../xml-utils/uncapitalize.js\";\nimport { XMLParser as FastXMLParser } from 'fast-xml-parser';\nexport function parseXMLSync(text, options) {\n    if (options?._parser && options._parser !== 'fast-xml-parser') {\n        throw new Error(options?._parser);\n    }\n    const fastXMLOptions = {\n        // Default FastXML options\n        // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes\n        allowBooleanAttributes: true,\n        // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration\n        ignoreDeclaration: true,\n        // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix\n        removeNSPrefix: options?.removeNSPrefix,\n        // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename\n        textNodeName: options?.textNodeName,\n        // Let's application specify keys that are always arrays\n        isArray: (name, jpath, isLeafNode, isAttribute) => {\n            const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));\n            return array;\n        },\n        // Application overrides\n        ...options?._fastXML\n    };\n    const xml = fastParseXML(text, fastXMLOptions);\n    // Note - could be done with FastXML tag processing\n    return options?.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n}\nexport function fastParseXML(text, options) {\n    const parser = new FastXMLParser({\n        ignoreAttributes: false,\n        attributeNamePrefix: '',\n        ...options\n    });\n    const parsedXML = parser.parse(text);\n    return parsedXML;\n}\n/**\n * @todo Build a streaming XML parser based on sax-js\n * @param text\n * @param options\n * @returns\n */\nexport function parseXMLInBatches(text, options = {}) {\n    const parser = new StreamingXMLParser({\n        ...options,\n        strict: true\n    });\n    parser.write(text);\n    parser.close();\n    return parser.result;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { parseXMLSync } from \"./lib/parsers/parse-xml.js\";\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.3.3\" !== 'undefined' ? \"4.3.3\" : 'latest';\n/**\n * Loader for XML files\n */\nexport const XMLLoader = {\n    dataType: null,\n    batchType: null,\n    name: 'XML',\n    id: 'xml',\n    module: 'xml',\n    version: VERSION,\n    worker: false,\n    extensions: ['xml'],\n    mimeTypes: ['application/xml', 'text/xml'],\n    testText: testXMLFile,\n    options: {\n        xml: {\n            _parser: 'fast-xml-parser',\n            uncapitalizeKeys: false,\n            removeNSPrefix: false,\n            textNodeName: 'value',\n            arrayPaths: []\n        }\n    },\n    parse: async (arrayBuffer, options) => parseXMLSync(new TextDecoder().decode(arrayBuffer), {\n        ...XMLLoader.options.xml,\n        ...options?.xml\n    }),\n    parseTextSync: (text, options) => parseXMLSync(text, { ...XMLLoader.options.xml, ...options?.xml })\n};\nfunction testXMLFile(text) {\n    // TODO - There could be space first.\n    return text.startsWith('<?xml');\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { mergeLoaderOptions } from '@loaders.gl/loader-utils';\nimport { XMLLoader } from \"./xml-loader.js\";\n/**\n * Loader for HTML files\n * Essentially a copy of the XMLLoader with different mime types, file extensions and content tests.\n * This split enables applications can control whether they want HTML responses to be parsed by the XML loader or not.\n * This loader does not have any additional understanding of the structure of HTML or the document.\n */\nexport const HTMLLoader = {\n    ...XMLLoader,\n    name: 'HTML',\n    id: 'html',\n    extensions: ['html', 'htm'],\n    mimeTypes: ['text/html'],\n    testText: testHTMLFile,\n    parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n    parseTextSync: (text, options) => parseTextSync(text, options)\n};\nfunction testHTMLFile(text) {\n    // TODO - There could be space first.\n    return text.startsWith('<html');\n}\nfunction parseTextSync(text, options) {\n    // fast-xml-parser can recognize HTML entities\n    // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#htmlentities\n    // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md\n    options = mergeLoaderOptions(options, {\n        xml: {\n            _parser: 'fast-xml-parser',\n            _fastXML: {\n                htmlEntities: true\n            }\n        }\n    });\n    return XMLLoader.parseTextSync?.(text, options);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// TODO - these utilities could be moved to the XML parser.\n// uncapitalizeKeys could be an XMLLoader option\n/**\n * Extracts a value or array and always return an array\n * Useful since XML parses to object instead of array when only a single value is provided\n */\nexport function convertXMLValueToArray(xmlValue) {\n    if (Array.isArray(xmlValue)) {\n        return xmlValue;\n    }\n    if (xmlValue && typeof xmlValue === 'object' && xmlValue['0']) {\n        // Error this is an objectified array\n    }\n    if (xmlValue) {\n        return [xmlValue];\n    }\n    return [];\n}\n/**\n * Mutates a field in place, converting it to array\n * Useful since XML parses to object instead of array when only a single value is provided\n */\nexport function convertXMLFieldToArrayInPlace(xml, key) {\n    xml[key] = convertXMLValueToArray(xml[key]);\n}\n"],
  "mappings": "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",
  "names": ["FastXMLParser"]
}
