{"version":3,"file":"sdf-creator.esm.js","sources":["../lib/index.js"],"sourcesContent":["/**\n * Converts an array of objects containing molfile to a SDF string.\n * @param molecules - Array of molecule objects with molfile and properties.\n * @param options - Options to create the SDF.\n * @returns An object with the generated SDF string and the time taken.\n */\nexport function create(molecules, options = {}) {\n    const { molfilePropertyName = 'molfile', eol = '\\n', filter = /.*/, strict = false, } = options;\n    const emptyMolfile = 'empty.mol\\n  Spectrum generator\\n\\n  0  0  0  0  0  0  0  0  0  0999 V2000\\nM  END\\n';\n    const start = Date.now();\n    function normaliseMolfile(molfile) {\n        if (!molfile) {\n            if (strict)\n                throw new Error('Array containing emtpy molfiles');\n            molfile = emptyMolfile;\n        }\n        let molfileEOL = '\\n';\n        if (molfile.includes('\\r\\n')) {\n            molfileEOL = '\\r\\n';\n        }\n        else if (molfile.includes('\\r')) {\n            molfileEOL = '\\r';\n        }\n        const lines = molfile.replace(/[\\r\\n]+$/, '').split(molfileEOL);\n        return lines.join(eol);\n    }\n    const result = [];\n    for (const molecule of molecules) {\n        result.push(normaliseMolfile(molecule[molfilePropertyName]));\n        for (const key in molecule) {\n            const value = molecule[key];\n            if (key !== molfilePropertyName &&\n                (!filter || key.match(filter)) &&\n                value) {\n                result.push(`>  <${key}>`, value + eol);\n            }\n        }\n        result.push('$$$$');\n    }\n    const sdf = result.join(eol);\n    return {\n        time: Date.now() - start,\n        sdf,\n    };\n}\n//# sourceMappingURL=index.js.map"],"names":["create","molecules","options","molfilePropertyName","eol","filter","strict","emptyMolfile","start","Date","now","normaliseMolfile","molfile","Error","molfileEOL","includes","lines","replace","split","join","result","molecule","push","key","value","match","sdf","time"],"mappings":";;;;;;;AA8BA;;;;;;AAMM,SAAUA,MAAMA,CACpBC,SAAwC,EACxCC,OAAA,GAAyB,EAAE,EAAA;EAE3B,MAAM;AACJC,IAAAA,mBAAmB,GAAG,SAAS;AAC/BC,IAAAA,GAAG,GAAG,IAAI;AACVC,IAAAA,MAAM,GAAG,IAAI;AACbC,IAAAA,MAAM,GAAG;AAAK,GACf,GAAGJ,OAAO;EAEX,MAAMK,YAAY,GAChB,sFAAsF;AAExF,EAAA,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,EAAE;EAExB,SAASC,gBAAgBA,CAACC,OAA2B,EAAA;IACnD,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA,IAAIN,MAAM,EAAE,MAAM,IAAIO,KAAK,CAAC,iCAAiC,CAAC;AAC9DD,MAAAA,OAAO,GAAGL,YAAY;AACxB,IAAA;IACA,IAAIO,UAAU,GAAG,IAAI;AACrB,IAAA,IAAIF,OAAO,CAACG,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5BD,MAAAA,UAAU,GAAG,MAAM;IACrB,CAAC,MAAM,IAAIF,OAAO,CAACG,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjCD,MAAAA,UAAU,GAAG,IAAI;AACnB,IAAA;AACA,IAAA,MAAME,KAAK,GAAGJ,OAAO,CAACK,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAACC,KAAK,CAACJ,UAAU,CAAC;AAC/D,IAAA,OAAOE,KAAK,CAACG,IAAI,CAACf,GAAG,CAAC;AACxB,EAAA;EAEA,MAAMgB,MAAM,GAAa,EAAE;AAC3B,EAAA,KAAK,MAAMC,QAAQ,IAAIpB,SAAS,EAAE;IAChCmB,MAAM,CAACE,IAAI,CAACX,gBAAgB,CAACU,QAAQ,CAAClB,mBAAmB,CAAC,CAAC,CAAC;AAC5D,IAAA,KAAK,MAAMoB,GAAG,IAAIF,QAAQ,EAAE;AAC1B,MAAA,MAAMG,KAAK,GAAGH,QAAQ,CAACE,GAAG,CAAC;AAC3B,MAAA,IACEA,GAAG,KAAKpB,mBAAmB,KAC1B,CAACE,MAAM,IAAIkB,GAAG,CAACE,KAAK,CAACpB,MAAM,CAAC,CAAC,IAC9BmB,KAAK,EACL;QACAJ,MAAM,CAACE,IAAI,CAAC,CAAA,IAAA,EAAOC,GAAG,GAAG,EAAEC,KAAK,GAAGpB,GAAG,CAAC;AACzC,MAAA;AACF,IAAA;AACAgB,IAAAA,MAAM,CAACE,IAAI,CAAC,MAAM,CAAC;AACrB,EAAA;AACA,EAAA,MAAMI,GAAG,GAAGN,MAAM,CAACD,IAAI,CAACf,GAAG,CAAC;EAE5B,OAAO;AACLuB,IAAAA,IAAI,EAAElB,IAAI,CAACC,GAAG,EAAE,GAAGF,KAAK;AACxBkB,IAAAA;AACD,GAAA;AACH;;;;"}