{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-line-intersect/dist/cjs/index.cjs","../../index.ts","../../lib/sweeplineIntersections.ts"],"names":["featureId","ringId","eventId"],"mappings":"AAAA;ACAA,wCAAkD;ADElD;AACA;AE2BA,4FAAsB;AACtB,qDAAyB;AAQlB,SAAS,sBAAA,CACd,OAAA,EACA,uBAAA,EACoB;AACpB,EAAA,MAAM,WAAA,EAAa,IAAI,wBAAA,CAAU,CAAC,CAAA,EAAG,qBAAqB,CAAA;AAC1D,EAAA,cAAA,CAAe,OAAA,EAAS,UAAU,CAAA;AAClC,EAAA,OAAO,QAAA,CAAS,UAAA,EAAY,uBAAuB,CAAA;AACrD;AAEA,SAAS,qBAAA,CAAsB,EAAA,EAAW,EAAA,EAAW;AACnD,EAAA,GAAA,CAAI,EAAA,CAAG,CAAA,CAAE,EAAA,EAAI,EAAA,CAAG,CAAA,CAAE,CAAA,EAAG,OAAO,CAAA;AAC5B,EAAA,GAAA,CAAI,EAAA,CAAG,CAAA,CAAE,EAAA,EAAI,EAAA,CAAG,CAAA,CAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAE5B,EAAA,GAAA,CACE,EAAA,CAAG,CAAA,CAAE,EAAA,IAAM,EAAA,CAAG,CAAA,CAAE,EAAA,GAAA,CACf,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,UAAA,GAAa,EAAA,CAAG,OAAA,IAAW,EAAA,CAAG,MAAA,CAAA,EACnD;AACA,IAAA,GAAA,CAAI,EAAA,CAAG,eAAA,GAAkB,CAAC,EAAA,CAAG,cAAA,EAAgB,OAAO,CAAA,CAAA;AAAA,EACtD;AAEA,EAAA,GAAA,CAAI,EAAA,CAAG,CAAA,CAAE,EAAA,IAAM,EAAA,CAAG,CAAA,CAAE,CAAA,EAAG,OAAO,EAAA,CAAG,CAAA,CAAE,EAAA,EAAI,EAAA,CAAG,CAAA,CAAE,EAAA,EAAI,EAAA,EAAI,CAAA,CAAA;AACpD,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,sCAAA,CAAuC,IAAA,EAAe,IAAA,EAAe;AAC5E,EAAA,GAAA,CAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA,EAAG,OAAO,CAAA;AAChE,EAAA,GAAA,CAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAEhE,EAAA,GAAA,CAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,EAAA,IAAM,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA,EAAG;AACzD,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,EAAA,EAAI,EAAA,EAAI,CAAA,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,cAAA,CACP,OAAA,EACA,UAAA,EACA;AACA,EAAA,GAAA,CAAI,OAAA,CAAQ,KAAA,IAAS,mBAAA,EAAqB;AACxC,IAAA,MAAM,SAAA,EAAW,OAAA,CAAQ,QAAA;AACzB,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,QAAA,CAAS,MAAA,EAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,cAAA,CAAe,QAAA,CAAS,CAAC,CAAA,EAAG,UAAU,CAAA;AAAA,IACxC;AAAA,EACF,EAAA,KAAO;AACL,IAAA,cAAA,CAAe,OAAA,EAAS,UAAU,CAAA;AAAA,EACpC;AACF;AAEA,IAAI,UAAA,EAAY,CAAA;AAChB,IAAI,OAAA,EAAS,CAAA;AACb,IAAI,QAAA,EAAU,CAAA;AACd,SAAS,cAAA,CACP,iBAAA,EACA,UAAA,EACA;AACA,EAAA,MAAM,KAAA,EACJ,iBAAA,CAAkB,KAAA,IAAS,UAAA,EACvB,iBAAA,CAAkB,SAAA,EAClB,iBAAA;AAKN,EAAA,IAAI,OAAA,EAAU,IAAA,CAAa,WAAA;AAG3B,EAAA,GAAA,CAAI,IAAA,CAAK,KAAA,IAAS,UAAA,GAAa,IAAA,CAAK,KAAA,IAAS,iBAAA;AAC3C,IAAA,OAAA,EAAS,CAAC,MAAM,CAAA;AAClB,EAAA,GAAA,CAAI,IAAA,CAAK,KAAA,IAAS,YAAA,EAAc,OAAA,EAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,MAAA,CAAO,MAAA,EAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,IAAA,CAAA,IAAS,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,MAAA,CAAO,CAAC,CAAA,CAAE,MAAA,EAAQ,EAAA,EAAA,EAAM;AAC5C,MAAA,IAAI,SAAA,EAAW,MAAA,CAAO,CAAC,CAAA,CAAE,EAAE,CAAA,CAAE,CAAC,CAAA;AAC9B,MAAA,IAAI,MAAA,EAAQ,IAAA;AACZ,MAAA,OAAA,EAAS,OAAA,EAAS,CAAA;AAClB,MAAA,IAAA,CAAA,IAAS,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,CAAC,CAAA,CAAE,EAAE,CAAA,CAAE,OAAA,EAAS,CAAA,EAAG,GAAA,EAAA,EAAO;AACvD,QAAA,MAAA,EAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,EAAE,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAE7B,QAAA,MAAM,GAAA,EAAK,IAAI,KAAA,CAAM,QAAA,EAAU,SAAA,EAAW,MAAA,EAAQ,OAAO,CAAA;AACzD,QAAA,MAAM,GAAA,EAAK,IAAI,KAAA,CAAM,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,CAAC,CAAA;AAE1D,QAAA,EAAA,CAAG,WAAA,EAAa,EAAA;AAChB,QAAA,EAAA,CAAG,WAAA,EAAa,EAAA;AAEhB,QAAA,GAAA,CAAI,qBAAA,CAAsB,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA,EAAG;AACrC,UAAA,EAAA,CAAG,eAAA,EAAiB,IAAA;AACpB,UAAA,EAAA,CAAG,eAAA,EAAiB,KAAA;AAAA,QACtB,EAAA,KAAO;AACL,UAAA,EAAA,CAAG,eAAA,EAAiB,IAAA;AACpB,UAAA,EAAA,CAAG,eAAA,EAAiB,KAAA;AAAA,QACtB;AACA,QAAA,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAClB,QAAA,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAElB,QAAA,SAAA,EAAW,KAAA;AACX,QAAA,QAAA,EAAU,QAAA,EAAU,CAAA;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACA,EAAA,UAAA,EAAY,UAAA,EAAY,CAAA;AAC1B;AAEA,IAAM,MAAA,EAAN,MAAY;AAAA,EAQV,WAAA,CACE,CAAA,EACAA,UAAAA,EACAC,OAAAA,EACAC,QAAAA,EACA;AACA,IAAA,IAAA,CAAK,EAAA,EAAI;AAAA,MACP,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA;AAAA,MACN,CAAA,EAAG,CAAA,CAAE,CAAC;AAAA,IACR,CAAA;AACA,IAAA,IAAA,CAAK,UAAA,EAAYF,UAAAA;AACjB,IAAA,IAAA,CAAK,OAAA,EAASC,OAAAA;AACd,IAAA,IAAA,CAAK,QAAA,EAAUC,QAAAA;AAEf,IAAA,IAAA,CAAK,WAAA,EAAa,IAAA;AAClB,IAAA,IAAA,CAAK,eAAA,EAAiB,IAAA;AAAA,EACxB;AAAA,EAEA,WAAA,CAAY,YAAA,EAAqB;AAC/B,IAAA,OAAO,IAAA,CAAK,CAAA,CAAE,EAAA,IAAM,YAAA,CAAa,CAAA,CAAE,EAAA,GAAK,IAAA,CAAK,CAAA,CAAE,EAAA,IAAM,YAAA,CAAa,CAAA,CAAE,CAAA;AAAA,EACtE;AAAA,EAEA,OAAA,CAAA,EAA4B;AAC1B,IAAA,OAAO,CAAC,IAAA,CAAK,CAAA,CAAE,CAAA,EAAG,IAAA,CAAK,CAAA,CAAE,CAAC,CAAA;AAAA,EAC5B;AACF,CAAA;AAEA,SAAS,QAAA,CACP,UAAA,EACA,wBAAA,EAAmC,KAAA,EACf;AACpB,EAAA,MAAM,mBAAA,EAAyC,CAAC,CAAA;AAChD,EAAA,MAAM,SAAA,EAAW,IAAI,wBAAA,CAAU,CAAC,CAAA,EAAG,sCAAsC,CAAA;AAEzE,EAAA,MAAA,CAAO,UAAA,CAAW,MAAA,EAAQ;AACxB,IAAA,MAAM,MAAA,EAAQ,UAAA,CAAW,GAAA,CAAI,CAAA;AAC7B,IAAA,GAAA,CAAI,KAAA,CAAM,cAAA,EAAgB;AAExB,MAAA,MAAM,QAAA,EAAU,IAAI,OAAA,CAAQ,KAAK,CAAA;AACjC,MAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,QAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,SAAA,EAAW,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA;AAChC,QAAA,GAAA,CAAI,uBAAA,EAAyB;AAC3B,UAAA,GAAA,CAAI,QAAA,CAAS,cAAA,CAAe,UAAA,IAAc,KAAA,CAAM,SAAA,EAAW,QAAA;AAAA,QAC7D;AACA,QAAA,MAAM,aAAA,EAAe,oBAAA,CAAqB,OAAA,EAAS,QAAQ,CAAA;AAC3D,QAAA,GAAA,CAAI,aAAA,IAAiB,KAAA,EAAO,kBAAA,CAAmB,IAAA,CAAK,YAAY,CAAA;AAAA,MAClE;AACA,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAAA,IACvB,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,eAAA,IAAmB,KAAA,EAAO;AACzC,MAAA,QAAA,CAAS,GAAA,CAAI,CAAA;AAAA,IAGf;AAAA,EACF;AACA,EAAA,OAAO,kBAAA;AACT;AAEA,IAAM,QAAA,EAAN,MAAc;AAAA;AAAA,EAKZ,WAAA,CAAY,KAAA,EAAc;AACxB,IAAA,IAAA,CAAK,eAAA,EAAiB,KAAA;AACtB,IAAA,IAAA,CAAK,gBAAA,EAAkB,KAAA,CAAM,UAAA;AAAA,EAC/B;AACF,CAAA;AAEA,SAAS,oBAAA,CACP,IAAA,EACA,IAAA,EAC0B;AAC1B,EAAA,GAAA,CAAI,KAAA,IAAS,KAAA,GAAQ,KAAA,IAAS,IAAA,EAAM,OAAO,KAAA;AAE3C,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,cAAA,CAAe,CAAA,CAAE,CAAA;AACjC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,cAAA,CAAe,CAAA,CAAE,CAAA;AACjC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA;AAClC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA;AAClC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,cAAA,CAAe,CAAA,CAAE,CAAA;AACjC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,cAAA,CAAe,CAAA,CAAE,CAAA;AACjC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA;AAClC,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,eAAA,CAAgB,CAAA,CAAE,CAAA;AAElC,EAAA,MAAM,OAAA,EAAS,wCAAA,EAAS,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAC9C,EAAA,MAAM,OAAA,EAAS,wCAAA,EAAS,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAE9C,EAAA,GAAA,CAAI,OAAA,EAAS,EAAA,GAAK,OAAA,EAAS,CAAA,EAAG,OAAO,KAAA;AAAA,EAAA,KAAA,GAAA,CAC5B,OAAA,EAAS,EAAA,GAAK,OAAA,EAAS,CAAA,EAAG,OAAO,KAAA;AAE1C,EAAA,GAAA,CAAI,IAAA,CAAK,cAAA,CAAe,OAAA,IAAW,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ;AAC7D,IAAA,GAAA,CACE,IAAA,CAAK,eAAA,CAAgB,WAAA,CAAY,IAAA,CAAK,cAAc,EAAA,GACpD,IAAA,CAAK,eAAA,CAAgB,WAAA,CAAY,IAAA,CAAK,eAAe,EAAA,GACrD,IAAA,CAAK,cAAA,CAAe,WAAA,CAAY,IAAA,CAAK,cAAc,EAAA,GACnD,IAAA,CAAK,cAAA,CAAe,WAAA,CAAY,IAAA,CAAK,eAAe,CAAA;AAEpD,MAAA,OAAO,KAAA;AAAA,EACX,EAAA,KAAO;AACL,IAAA,GAAA,CAAI,IAAA,CAAK,eAAA,CAAgB,WAAA,CAAY,IAAA,CAAK,cAAc,CAAA;AACtD,MAAA,OAAO,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,CAAA;AACrC,IAAA,GAAA,CAAI,IAAA,CAAK,eAAA,CAAgB,WAAA,CAAY,IAAA,CAAK,eAAe,CAAA;AACvD,MAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,CAAA;AACtC,IAAA,GAAA,CAAI,IAAA,CAAK,cAAA,CAAe,WAAA,CAAY,IAAA,CAAK,cAAc,CAAA;AACrD,MAAA,OAAO,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,CAAA;AACrC,IAAA,GAAA,CAAI,IAAA,CAAK,cAAA,CAAe,WAAA,CAAY,IAAA,CAAK,eAAe,CAAA;AACtD,MAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,CAAA;AAAA,EACxC;AAEA,EAAA,MAAM,MAAA,EAAA,CAAS,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,CAAA;AACxD,EAAA,MAAM,MAAA,EAAA,CAAS,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,CAAA;AACxD,EAAA,MAAM,MAAA,EAAA,CAAS,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,EAAA,EAAA,CAAO,GAAA,EAAK,EAAA,CAAA;AAExD,EAAA,GAAA,CAAI,MAAA,IAAU,CAAA,EAAG;AACf,IAAA,GAAA,CAAI,MAAA,IAAU,EAAA,GAAK,MAAA,IAAU,CAAA,EAAG,OAAO,KAAA;AACvC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,GAAA,EAAK,MAAA,EAAQ,KAAA;AACnB,EAAA,MAAM,GAAA,EAAK,MAAA,EAAQ,KAAA;AAEnB,EAAA,GAAA,CAAI,GAAA,GAAM,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,GAAA,GAAM,CAAA,EAAG;AAC5C,IAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAA,CAAM,GAAA,EAAK,EAAA,CAAA;AAC1B,IAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAA,CAAM,GAAA,EAAK,EAAA,CAAA;AAC1B,IAAA,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd;AACA,EAAA,OAAO,KAAA;AACT;AF9GA;AACA;ACrIA,SAAS,aAAA,CAIP,KAAA,EACA,KAAA,EACA,QAAA,EAGI,CAAC,CAAA,EACqB;AAC1B,EAAA,MAAM,EAAE,iBAAA,EAAmB,IAAA,EAAM,wBAAA,EAA0B,KAAK,EAAA,EAAI,OAAA;AACpE,EAAA,IAAI,SAAA,EAA+B,CAAC,CAAA;AACpC,EAAA,GAAA,CAAI,KAAA,CAAM,KAAA,IAAS,mBAAA;AACjB,IAAA,SAAA,EAAW,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA;AAAA,EAAA,KAAA,GAAA,CAClC,KAAA,CAAM,KAAA,IAAS,SAAA,EAAW,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,EAAA,KAAA,GAAA,CAEpD,KAAA,CAAM,KAAA,IAAS,aAAA,GACf,KAAA,CAAM,KAAA,IAAS,UAAA,GACf,KAAA,CAAM,KAAA,IAAS,kBAAA,GACf,KAAA,CAAM,KAAA,IAAS,cAAA,EACf;AACA,IAAA,QAAA,CAAS,IAAA,CAAK,8BAAA,KAAa,CAAC,CAAA;AAAA,EAC9B;AAEA,EAAA,GAAA,CAAI,KAAA,CAAM,KAAA,IAAS,mBAAA;AACjB,IAAA,SAAA,EAAW,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA;AAAA,EAAA,KAAA,GAAA,CAClC,KAAA,CAAM,KAAA,IAAS,SAAA,EAAW,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,EAAA,KAAA,GAAA,CAEpD,KAAA,CAAM,KAAA,IAAS,aAAA,GACf,KAAA,CAAM,KAAA,IAAS,UAAA,GACf,KAAA,CAAM,KAAA,IAAS,kBAAA,GACf,KAAA,CAAM,KAAA,IAAS,cAAA,EACf;AACA,IAAA,QAAA,CAAS,IAAA,CAAK,8BAAA,KAAa,CAAC,CAAA;AAAA,EAC9B;AAEA,EAAA,MAAM,cAAA,EAAgB,sBAAA;AAAA,IACpB,wCAAA,QAA0B,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,QAAA,EAA0B,CAAC,CAAA;AAC/B,EAAA,GAAA,CAAI,gBAAA,EAAkB;AACpB,IAAA,MAAM,OAAA,EAAkC,CAAC,CAAA;AACzC,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,YAAA,EAAA,GAAiB;AACtC,MAAA,MAAM,IAAA,EAAM,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA;AACjC,MAAA,GAAA,CAAI,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG;AAChB,QAAA,MAAA,CAAO,GAAG,EAAA,EAAI,IAAA;AACd,QAAA,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA;AAAA,MAC3B;AAAA,IACF,CAAC,CAAA;AAAA,EACH,EAAA,KAAO;AACL,IAAA,QAAA,EAAU,aAAA;AAAA,EACZ;AACA,EAAA,OAAO,wCAAA,OAAkB,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAA,GAAM,4BAAA,CAAO,CAAC,CAAC,CAAA;AACvD;AAGA,IAAO,cAAA,EAAQ,aAAA;AD8Gf;AACE;AACA;AACF,uEAAC","file":"/home/runner/work/turf/turf/packages/turf-line-intersect/dist/cjs/index.cjs","sourcesContent":[null,"import { feature, featureCollection, point } from \"@turf/helpers\";\nimport {\n  Feature,\n  FeatureCollection,\n  LineString,\n  MultiLineString,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from \"geojson\";\nimport {\n  type Intersection,\n  sweeplineIntersections as findIntersections,\n} from \"./lib/sweeplineIntersections.js\";\n\n/**\n * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s).\n *\n * @function\n * @param {GeoJSON} line1 any LineString or Polygon\n * @param {GeoJSON} line2 any LineString or Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.removeDuplicates=true] remove duplicate intersections\n * @param {boolean} [options.ignoreSelfIntersections=true] ignores self-intersections on input features\n * @returns {FeatureCollection<Point>} point(s) that intersect both\n * @example\n * var line1 = turf.lineString([[126, -11], [129, -21]]);\n * var line2 = turf.lineString([[123, -18], [131, -14]]);\n * var intersects = turf.lineIntersect(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, intersects]\n */\nfunction lineIntersect<\n  G1 extends LineString | MultiLineString | Polygon | MultiPolygon,\n  G2 extends LineString | MultiLineString | Polygon | MultiPolygon,\n>(\n  line1: FeatureCollection<G1> | Feature<G1> | G1,\n  line2: FeatureCollection<G2> | Feature<G2> | G2,\n  options: {\n    removeDuplicates?: boolean;\n    ignoreSelfIntersections?: boolean;\n  } = {}\n): FeatureCollection<Point> {\n  const { removeDuplicates = true, ignoreSelfIntersections = true } = options;\n  let features: Feature<G1 | G2>[] = [];\n  if (line1.type === \"FeatureCollection\")\n    features = features.concat(line1.features);\n  else if (line1.type === \"Feature\") features.push(line1);\n  else if (\n    line1.type === \"LineString\" ||\n    line1.type === \"Polygon\" ||\n    line1.type === \"MultiLineString\" ||\n    line1.type === \"MultiPolygon\"\n  ) {\n    features.push(feature(line1));\n  }\n\n  if (line2.type === \"FeatureCollection\")\n    features = features.concat(line2.features);\n  else if (line2.type === \"Feature\") features.push(line2);\n  else if (\n    line2.type === \"LineString\" ||\n    line2.type === \"Polygon\" ||\n    line2.type === \"MultiLineString\" ||\n    line2.type === \"MultiPolygon\"\n  ) {\n    features.push(feature(line2));\n  }\n\n  const intersections = findIntersections(\n    featureCollection(features),\n    ignoreSelfIntersections\n  );\n\n  let results: Intersection[] = [];\n  if (removeDuplicates) {\n    const unique: Record<string, boolean> = {};\n    intersections.forEach((intersection) => {\n      const key = intersection.join(\",\");\n      if (!unique[key]) {\n        unique[key] = true;\n        results.push(intersection);\n      }\n    });\n  } else {\n    results = intersections;\n  }\n  return featureCollection(results.map((r) => point(r)));\n}\n\nexport { lineIntersect };\nexport default lineIntersect;\n","/**\n * MIT License\n *\n * Copyright (c) 2019 Rowan Winsemius\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n// This code is a vendored version from https://github.com/rowanwins/sweepline-intersections\n// We have applied our formatting rules, and then added type annotations.\n\n// The vendoring was required because the latest upstream versions are required to fix packaging,\n// but those versions include devDependencies in dependencies (see: rowanwins/sweepline-intersections#25)\n\nimport TinyQueue from \"tinyqueue\";\nimport { orient2d } from \"robust-predicates\";\nimport type { FeatureCollection, Feature, GeometryObject } from \"geojson\";\n\nexport type Intersection = [number, number];\n\n/**\n * @param geojson Must not use GeometryCollections\n */\nexport function sweeplineIntersections(\n  geojson: FeatureCollection<GeometryObject> | Feature<GeometryObject>,\n  ignoreSelfIntersections: boolean\n): [number, number][] {\n  const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n  fillEventQueue(geojson, eventQueue);\n  return runCheck(eventQueue, ignoreSelfIntersections);\n}\n\nfunction checkWhichEventIsLeft(e1: Event, e2: Event) {\n  if (e1.p.x > e2.p.x) return 1;\n  if (e1.p.x < e2.p.x) return -1;\n\n  if (\n    e1.p.x === e2.p.x &&\n    (e1.featureId !== e2.featureId || e1.ringId !== e2.ringId)\n  ) {\n    if (e1.isLeftEndpoint && !e2.isLeftEndpoint) return -1;\n  }\n\n  if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1;\n  return 1;\n}\n\nfunction checkWhichSegmentHasRightEndpointFirst(seg1: Segment, seg2: Segment) {\n  if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1;\n  if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1;\n\n  if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) {\n    return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1;\n  }\n  return 1;\n}\n\nfunction fillEventQueue(\n  geojson: FeatureCollection<GeometryObject> | Feature<GeometryObject>,\n  eventQueue: TinyQueue<Event>\n) {\n  if (geojson.type === \"FeatureCollection\") {\n    const features = geojson.features;\n    for (let i = 0; i < features.length; i++) {\n      processFeature(features[i], eventQueue);\n    }\n  } else {\n    processFeature(geojson, eventQueue);\n  }\n}\n\nlet featureId = 0;\nlet ringId = 0;\nlet eventId = 0;\nfunction processFeature(\n  featureOrGeometry: Feature<GeometryObject> | GeometryObject,\n  eventQueue: TinyQueue<Event>\n) {\n  const geom =\n    featureOrGeometry.type === \"Feature\"\n      ? featureOrGeometry.geometry\n      : featureOrGeometry;\n\n  // This `as any` cast is a bit unfortunate, but Exclude<GeometryObject, GeometryCollection>\n  // winds up causing several more errors below, and we'd like to avoid making any meaningful\n  // code changes just for the sake of type correctness.\n  let coords = (geom as any).coordinates;\n\n  // standardise the input\n  if (geom.type === \"Polygon\" || geom.type === \"MultiLineString\")\n    coords = [coords];\n  if (geom.type === \"LineString\") coords = [[coords]];\n\n  for (let i = 0; i < coords.length; i++) {\n    for (let ii = 0; ii < coords[i].length; ii++) {\n      let currentP = coords[i][ii][0];\n      let nextP = null;\n      ringId = ringId + 1;\n      for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n        nextP = coords[i][ii][iii + 1];\n\n        const e1 = new Event(currentP, featureId, ringId, eventId);\n        const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n\n        e1.otherEvent = e2;\n        e2.otherEvent = e1;\n\n        if (checkWhichEventIsLeft(e1, e2) > 0) {\n          e2.isLeftEndpoint = true;\n          e1.isLeftEndpoint = false;\n        } else {\n          e1.isLeftEndpoint = true;\n          e2.isLeftEndpoint = false;\n        }\n        eventQueue.push(e1);\n        eventQueue.push(e2);\n\n        currentP = nextP;\n        eventId = eventId + 1;\n      }\n    }\n  }\n  featureId = featureId + 1;\n}\n\nclass Event {\n  public featureId: number;\n  public ringId: number;\n  public eventId: number;\n  public p: { x: number; y: number };\n  public otherEvent: Event | null;\n  public isLeftEndpoint: null | boolean;\n\n  constructor(\n    p: [number, number],\n    featureId: number,\n    ringId: number,\n    eventId: number\n  ) {\n    this.p = {\n      x: p[0],\n      y: p[1],\n    };\n    this.featureId = featureId;\n    this.ringId = ringId;\n    this.eventId = eventId;\n\n    this.otherEvent = null;\n    this.isLeftEndpoint = null;\n  }\n\n  isSamePoint(eventToCheck: Event) {\n    return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y;\n  }\n\n  asNewXY(): [number, number] {\n    return [this.p.x, this.p.y];\n  }\n}\n\nfunction runCheck(\n  eventQueue: TinyQueue<Event>,\n  ignoreSelfIntersections: boolean = false\n): [number, number][] {\n  const intersectionPoints: [number, number][] = [];\n  const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n\n  while (eventQueue.length) {\n    const event = eventQueue.pop()!;\n    if (event.isLeftEndpoint) {\n      // debugEventAndSegments(event.p, outQueue.data)\n      const segment = new Segment(event);\n      for (let i = 0; i < outQueue.data.length; i++) {\n        const otherSeg = outQueue.data[i];\n        if (ignoreSelfIntersections) {\n          if (otherSeg.leftSweepEvent.featureId === event.featureId) continue;\n        }\n        const intersection = testSegmentIntersect(segment, otherSeg);\n        if (intersection !== false) intersectionPoints.push(intersection);\n      }\n      outQueue.push(segment);\n    } else if (event.isLeftEndpoint === false) {\n      outQueue.pop();\n      // const seg = outQueue.pop()\n      // debugRemovingSegment(event.p, seg)\n    }\n  }\n  return intersectionPoints;\n}\n\nclass Segment {\n  public leftSweepEvent: Event;\n  public rightSweepEvent: Event;\n\n  /** @param event must have otherEvent non-null */\n  constructor(event: Event) {\n    this.leftSweepEvent = event;\n    this.rightSweepEvent = event.otherEvent!;\n  }\n}\n\nfunction testSegmentIntersect(\n  seg1: Segment,\n  seg2: Segment\n): [number, number] | false {\n  if (seg1 === null || seg2 === null) return false;\n\n  const x1 = seg1.leftSweepEvent.p.x;\n  const y1 = seg1.leftSweepEvent.p.y;\n  const x2 = seg1.rightSweepEvent.p.x;\n  const y2 = seg1.rightSweepEvent.p.y;\n  const x3 = seg2.leftSweepEvent.p.x;\n  const y3 = seg2.leftSweepEvent.p.y;\n  const x4 = seg2.rightSweepEvent.p.x;\n  const y4 = seg2.rightSweepEvent.p.y;\n\n  const score1 = orient2d(x1, y1, x2, y2, x3, y3);\n  const score2 = orient2d(x1, y1, x2, y2, x4, y4);\n\n  if (score1 > 0 && score2 > 0) return false;\n  else if (score1 < 0 && score2 < 0) return false;\n\n  if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId) {\n    if (\n      seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n      seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) ||\n      seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n      seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent)\n    )\n      return false;\n  } else {\n    if (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent))\n      return seg2.leftSweepEvent.asNewXY();\n    if (seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent))\n      return seg2.rightSweepEvent.asNewXY();\n    if (seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent))\n      return seg2.leftSweepEvent.asNewXY();\n    if (seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))\n      return seg2.rightSweepEvent.asNewXY();\n  }\n\n  const denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n  const numeA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\n  const numeB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\n\n  if (denom === 0) {\n    if (numeA === 0 && numeB === 0) return false;\n    return false;\n  }\n\n  const uA = numeA / denom;\n  const uB = numeB / denom;\n\n  if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n    const x = x1 + uA * (x2 - x1);\n    const y = y1 + uA * (y2 - y1);\n    return [x, y];\n  }\n  return false;\n}\n"]}