@turf/boolean-crosses 7.3.0 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
2
2
  var _lineintersect = require('@turf/line-intersect');
3
3
  var _polygontoline = require('@turf/polygon-to-line');
4
+ var _booleanequal = require('@turf/boolean-equal');
4
5
  var _booleanpointinpolygon = require('@turf/boolean-point-in-polygon');
5
6
  var _invariant = require('@turf/invariant');
6
7
  var _helpers = require('@turf/helpers');
@@ -70,23 +71,23 @@ function doMultiPointAndLineStringCross(multiPoint, lineString) {
70
71
  return foundIntPoint && foundExtPoint;
71
72
  }
72
73
  function doLineStringsCross(lineString1, lineString2) {
73
- var doLinesIntersect = _lineintersect.lineIntersect.call(void 0, lineString1, lineString2);
74
- if (doLinesIntersect.features.length > 0) {
75
- for (var i = 0; i < lineString1.coordinates.length - 1; i++) {
76
- for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {
77
- var incEndVertices = true;
78
- if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {
79
- incEndVertices = false;
80
- }
81
- if (isPointOnLineSegment(
82
- lineString1.coordinates[i],
83
- lineString1.coordinates[i + 1],
84
- lineString2.coordinates[i2],
85
- incEndVertices
86
- )) {
87
- return true;
88
- }
89
- }
74
+ const doLinesIntersect = _lineintersect.lineIntersect.call(void 0, lineString1, lineString2);
75
+ if (doLinesIntersect.features.length === 0) return false;
76
+ for (const intersectPoint of doLinesIntersect.features) {
77
+ if (!_booleanequal.booleanEqual.call(void 0,
78
+ intersectPoint.geometry,
79
+ _helpers.point.call(void 0, lineString1.coordinates[0])
80
+ ) && !_booleanequal.booleanEqual.call(void 0,
81
+ intersectPoint.geometry,
82
+ _helpers.point.call(void 0, lineString1.coordinates[lineString1.coordinates.length - 1])
83
+ ) && !_booleanequal.booleanEqual.call(void 0,
84
+ intersectPoint.geometry,
85
+ _helpers.point.call(void 0, lineString2.coordinates[0])
86
+ ) && !_booleanequal.booleanEqual.call(void 0,
87
+ intersectPoint.geometry,
88
+ _helpers.point.call(void 0, lineString2.coordinates[lineString2.coordinates.length - 1])
89
+ )) {
90
+ return true;
90
91
  }
91
92
  }
92
93
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-boolean-crosses/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-boolean-crosses/dist/cjs/index.cjs","sourcesContent":[null,"import { Feature, Geometry, Polygon, LineString, MultiPoint } from \"geojson\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { getGeom } from \"@turf/invariant\";\nimport { point } from \"@turf/helpers\";\n\n/**\n * Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than\n * the maximum dimension of the two source geometries and the intersection set is interior to\n * both source geometries.\n *\n * Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.\n * Other comparisons are not supported as they are outside the OpenGIS Simple Features spec and may give unexpected results.\n *\n * @function\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line1 = turf.lineString([[-2, 2], [4, 2]]);\n * var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * var cross = turf.booleanCrosses(line1, line2);\n * //=true\n */\nfunction booleanCrosses(\n feature1: Feature<any> | Geometry,\n feature2: Feature<any> | Geometry\n): boolean {\n var geom1 = getGeom(feature1);\n var geom2 = getGeom(feature2);\n var type1 = geom1.type;\n var type2 = geom2.type;\n\n switch (type1) {\n case \"MultiPoint\":\n switch (type2) {\n case \"LineString\":\n return doMultiPointAndLineStringCross(geom1, geom2);\n case \"Polygon\":\n return doesMultiPointCrossPoly(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"LineString\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doMultiPointAndLineStringCross(geom2, geom1);\n case \"LineString\":\n return doLineStringsCross(geom1, geom2);\n case \"Polygon\":\n return doLineStringAndPolygonCross(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"Polygon\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doesMultiPointCrossPoly(geom2, geom1);\n case \"LineString\": // An inverse operation\n return doLineStringAndPolygonCross(geom2, geom1);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n default:\n throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n }\n}\n\nfunction doMultiPointAndLineStringCross(\n multiPoint: MultiPoint,\n lineString: LineString\n) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n var i = 0;\n while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString.coordinates[i2],\n lineString.coordinates[i2 + 1],\n multiPoint.coordinates[i],\n incEndVertices\n )\n ) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n i++;\n }\n return foundIntPoint && foundExtPoint;\n}\n\nfunction doLineStringsCross(lineString1: LineString, lineString2: LineString) {\n var doLinesIntersect = lineIntersect(lineString1, lineString2);\n if (doLinesIntersect.features.length > 0) {\n for (var i = 0; i < lineString1.coordinates.length - 1; i++) {\n for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString1.coordinates[i],\n lineString1.coordinates[i + 1],\n lineString2.coordinates[i2],\n incEndVertices\n )\n ) {\n return true;\n }\n }\n }\n }\n return false;\n}\n\nfunction doLineStringAndPolygonCross(lineString: LineString, polygon: Polygon) {\n const line: any = polygonToLine(polygon);\n const doLinesIntersect = lineIntersect(lineString, line);\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\n\nfunction doesMultiPointCrossPoly(multiPoint: MultiPoint, polygon: Polygon) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n for (let i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n if (booleanPointInPolygon(point(multiPoint.coordinates[i]), polygon)) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n\n return foundExtPoint && foundIntPoint;\n}\n\n/**\n * Is a point on a line segment\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {number[]} lineSegmentStart coord pair of start of line\n * @param {number[]} lineSegmentEnd coord pair of end of line\n * @param {number[]} pt coord pair of point to check\n * @param {boolean} incEnd whether the point is allowed to fall on the line ends\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(\n lineSegmentStart: number[],\n lineSegmentEnd: number[],\n pt: number[],\n incEnd: boolean\n) {\n var dxc = pt[0] - lineSegmentStart[0];\n var dyc = pt[1] - lineSegmentStart[1];\n var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n var cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (incEnd) {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0]\n : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1]\n : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n } else {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0]\n : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1]\n : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n }\n}\n\nexport { booleanCrosses };\nexport default booleanCrosses;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-boolean-crosses/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-boolean-crosses/dist/cjs/index.cjs","sourcesContent":[null,"import { Feature, Geometry, Polygon, LineString, MultiPoint } from \"geojson\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nimport { booleanEqual } from \"@turf/boolean-equal\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { getGeom } from \"@turf/invariant\";\nimport { point } from \"@turf/helpers\";\n\n/**\n * Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than\n * the maximum dimension of the two source geometries and the intersection set is interior to\n * both source geometries.\n *\n * Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.\n * Other comparisons are not supported as they are outside the OpenGIS Simple Features spec and may give unexpected results.\n *\n * @function\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line1 = turf.lineString([[-2, 2], [4, 2]]);\n * var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * var cross = turf.booleanCrosses(line1, line2);\n * //=true\n */\nfunction booleanCrosses(\n feature1: Feature<any> | Geometry,\n feature2: Feature<any> | Geometry\n): boolean {\n var geom1 = getGeom(feature1);\n var geom2 = getGeom(feature2);\n var type1 = geom1.type;\n var type2 = geom2.type;\n\n switch (type1) {\n case \"MultiPoint\":\n switch (type2) {\n case \"LineString\":\n return doMultiPointAndLineStringCross(geom1, geom2);\n case \"Polygon\":\n return doesMultiPointCrossPoly(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"LineString\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doMultiPointAndLineStringCross(geom2, geom1);\n case \"LineString\":\n return doLineStringsCross(geom1, geom2);\n case \"Polygon\":\n return doLineStringAndPolygonCross(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"Polygon\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doesMultiPointCrossPoly(geom2, geom1);\n case \"LineString\": // An inverse operation\n return doLineStringAndPolygonCross(geom2, geom1);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n default:\n throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n }\n}\n\nfunction doMultiPointAndLineStringCross(\n multiPoint: MultiPoint,\n lineString: LineString\n) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n var i = 0;\n while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString.coordinates[i2],\n lineString.coordinates[i2 + 1],\n multiPoint.coordinates[i],\n incEndVertices\n )\n ) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n i++;\n }\n return foundIntPoint && foundExtPoint;\n}\n\nfunction doLineStringsCross(lineString1: LineString, lineString2: LineString) {\n // See if there are any intersection points between these two lines.\n const doLinesIntersect = lineIntersect(lineString1, lineString2);\n if (doLinesIntersect.features.length === 0) return false;\n\n // As soon as we find any intersect point that doesn't lie on the start or\n // end point of either input lineString, that's considered a crossing.\n for (const intersectPoint of doLinesIntersect.features) {\n if (\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString1.coordinates[0])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString1.coordinates[lineString1.coordinates.length - 1])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString2.coordinates[0])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString2.coordinates[lineString2.coordinates.length - 1])\n )\n ) {\n return true;\n }\n }\n\n // Every intersection point we tried fell on an end point (considered the\n // boundary) of one of the input lines. Not considered a crossing.\n return false;\n}\n\nfunction doLineStringAndPolygonCross(lineString: LineString, polygon: Polygon) {\n const line: any = polygonToLine(polygon);\n const doLinesIntersect = lineIntersect(lineString, line);\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\n\nfunction doesMultiPointCrossPoly(multiPoint: MultiPoint, polygon: Polygon) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n for (let i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n if (booleanPointInPolygon(point(multiPoint.coordinates[i]), polygon)) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n\n return foundExtPoint && foundIntPoint;\n}\n\n/**\n * Is a point on a line segment\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {number[]} lineSegmentStart coord pair of start of line\n * @param {number[]} lineSegmentEnd coord pair of end of line\n * @param {number[]} pt coord pair of point to check\n * @param {boolean} incEnd whether the point is allowed to fall on the line ends\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(\n lineSegmentStart: number[],\n lineSegmentEnd: number[],\n pt: number[],\n incEnd: boolean\n) {\n var dxc = pt[0] - lineSegmentStart[0];\n var dyc = pt[1] - lineSegmentStart[1];\n var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n var cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (incEnd) {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0]\n : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1]\n : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n } else {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0]\n : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1]\n : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n }\n}\n\nexport { booleanCrosses };\nexport default booleanCrosses;\n"]}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // index.ts
2
2
  import { lineIntersect } from "@turf/line-intersect";
3
3
  import { polygonToLine } from "@turf/polygon-to-line";
4
+ import { booleanEqual } from "@turf/boolean-equal";
4
5
  import { booleanPointInPolygon } from "@turf/boolean-point-in-polygon";
5
6
  import { getGeom } from "@turf/invariant";
6
7
  import { point } from "@turf/helpers";
@@ -70,23 +71,23 @@ function doMultiPointAndLineStringCross(multiPoint, lineString) {
70
71
  return foundIntPoint && foundExtPoint;
71
72
  }
72
73
  function doLineStringsCross(lineString1, lineString2) {
73
- var doLinesIntersect = lineIntersect(lineString1, lineString2);
74
- if (doLinesIntersect.features.length > 0) {
75
- for (var i = 0; i < lineString1.coordinates.length - 1; i++) {
76
- for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {
77
- var incEndVertices = true;
78
- if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {
79
- incEndVertices = false;
80
- }
81
- if (isPointOnLineSegment(
82
- lineString1.coordinates[i],
83
- lineString1.coordinates[i + 1],
84
- lineString2.coordinates[i2],
85
- incEndVertices
86
- )) {
87
- return true;
88
- }
89
- }
74
+ const doLinesIntersect = lineIntersect(lineString1, lineString2);
75
+ if (doLinesIntersect.features.length === 0) return false;
76
+ for (const intersectPoint of doLinesIntersect.features) {
77
+ if (!booleanEqual(
78
+ intersectPoint.geometry,
79
+ point(lineString1.coordinates[0])
80
+ ) && !booleanEqual(
81
+ intersectPoint.geometry,
82
+ point(lineString1.coordinates[lineString1.coordinates.length - 1])
83
+ ) && !booleanEqual(
84
+ intersectPoint.geometry,
85
+ point(lineString2.coordinates[0])
86
+ ) && !booleanEqual(
87
+ intersectPoint.geometry,
88
+ point(lineString2.coordinates[lineString2.coordinates.length - 1])
89
+ )) {
90
+ return true;
90
91
  }
91
92
  }
92
93
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts"],"sourcesContent":["import { Feature, Geometry, Polygon, LineString, MultiPoint } from \"geojson\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { getGeom } from \"@turf/invariant\";\nimport { point } from \"@turf/helpers\";\n\n/**\n * Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than\n * the maximum dimension of the two source geometries and the intersection set is interior to\n * both source geometries.\n *\n * Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.\n * Other comparisons are not supported as they are outside the OpenGIS Simple Features spec and may give unexpected results.\n *\n * @function\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line1 = turf.lineString([[-2, 2], [4, 2]]);\n * var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * var cross = turf.booleanCrosses(line1, line2);\n * //=true\n */\nfunction booleanCrosses(\n feature1: Feature<any> | Geometry,\n feature2: Feature<any> | Geometry\n): boolean {\n var geom1 = getGeom(feature1);\n var geom2 = getGeom(feature2);\n var type1 = geom1.type;\n var type2 = geom2.type;\n\n switch (type1) {\n case \"MultiPoint\":\n switch (type2) {\n case \"LineString\":\n return doMultiPointAndLineStringCross(geom1, geom2);\n case \"Polygon\":\n return doesMultiPointCrossPoly(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"LineString\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doMultiPointAndLineStringCross(geom2, geom1);\n case \"LineString\":\n return doLineStringsCross(geom1, geom2);\n case \"Polygon\":\n return doLineStringAndPolygonCross(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"Polygon\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doesMultiPointCrossPoly(geom2, geom1);\n case \"LineString\": // An inverse operation\n return doLineStringAndPolygonCross(geom2, geom1);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n default:\n throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n }\n}\n\nfunction doMultiPointAndLineStringCross(\n multiPoint: MultiPoint,\n lineString: LineString\n) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n var i = 0;\n while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString.coordinates[i2],\n lineString.coordinates[i2 + 1],\n multiPoint.coordinates[i],\n incEndVertices\n )\n ) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n i++;\n }\n return foundIntPoint && foundExtPoint;\n}\n\nfunction doLineStringsCross(lineString1: LineString, lineString2: LineString) {\n var doLinesIntersect = lineIntersect(lineString1, lineString2);\n if (doLinesIntersect.features.length > 0) {\n for (var i = 0; i < lineString1.coordinates.length - 1; i++) {\n for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString1.coordinates[i],\n lineString1.coordinates[i + 1],\n lineString2.coordinates[i2],\n incEndVertices\n )\n ) {\n return true;\n }\n }\n }\n }\n return false;\n}\n\nfunction doLineStringAndPolygonCross(lineString: LineString, polygon: Polygon) {\n const line: any = polygonToLine(polygon);\n const doLinesIntersect = lineIntersect(lineString, line);\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\n\nfunction doesMultiPointCrossPoly(multiPoint: MultiPoint, polygon: Polygon) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n for (let i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n if (booleanPointInPolygon(point(multiPoint.coordinates[i]), polygon)) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n\n return foundExtPoint && foundIntPoint;\n}\n\n/**\n * Is a point on a line segment\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {number[]} lineSegmentStart coord pair of start of line\n * @param {number[]} lineSegmentEnd coord pair of end of line\n * @param {number[]} pt coord pair of point to check\n * @param {boolean} incEnd whether the point is allowed to fall on the line ends\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(\n lineSegmentStart: number[],\n lineSegmentEnd: number[],\n pt: number[],\n incEnd: boolean\n) {\n var dxc = pt[0] - lineSegmentStart[0];\n var dyc = pt[1] - lineSegmentStart[1];\n var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n var cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (incEnd) {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0]\n : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1]\n : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n } else {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0]\n : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1]\n : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n }\n}\n\nexport { booleanCrosses };\nexport default booleanCrosses;\n"],"mappings":";AACA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,eAAe;AACxB,SAAS,aAAa;AAqBtB,SAAS,eACP,UACA,UACS;AACT,MAAI,QAAQ,QAAQ,QAAQ;AAC5B,MAAI,QAAQ,QAAQ,QAAQ;AAC5B,MAAI,QAAQ,MAAM;AAClB,MAAI,QAAQ,MAAM;AAElB,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,+BAA+B,OAAO,KAAK;AAAA,QACpD,KAAK;AACH,iBAAO,wBAAwB,OAAO,KAAK;AAAA,QAC7C;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,+BAA+B,OAAO,KAAK;AAAA,QACpD,KAAK;AACH,iBAAO,mBAAmB,OAAO,KAAK;AAAA,QACxC,KAAK;AACH,iBAAO,4BAA4B,OAAO,KAAK;AAAA,QACjD;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,wBAAwB,OAAO,KAAK;AAAA,QAC7C,KAAK;AACH,iBAAO,4BAA4B,OAAO,KAAK;AAAA,QACjD;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF;AACE,YAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,EACnE;AACF;AAEA,SAAS,+BACP,YACA,YACA;AACA,MAAI,gBAAgB;AACpB,MAAI,gBAAgB;AACpB,MAAI,cAAc,WAAW,YAAY;AACzC,MAAI,IAAI;AACR,SAAO,IAAI,eAAe,CAAC,iBAAiB,CAAC,eAAe;AAC1D,aAAS,KAAK,GAAG,KAAK,WAAW,YAAY,SAAS,GAAG,MAAM;AAC7D,UAAI,iBAAiB;AACrB,UAAI,OAAO,KAAK,OAAO,WAAW,YAAY,SAAS,GAAG;AACxD,yBAAiB;AAAA,MACnB;AACA,UACE;AAAA,QACE,WAAW,YAAY,EAAE;AAAA,QACzB,WAAW,YAAY,KAAK,CAAC;AAAA,QAC7B,WAAW,YAAY,CAAC;AAAA,QACxB;AAAA,MACF,GACA;AACA,wBAAgB;AAAA,MAClB,OAAO;AACL,wBAAgB;AAAA,MAClB;AAAA,IACF;AACA;AAAA,EACF;AACA,SAAO,iBAAiB;AAC1B;AAEA,SAAS,mBAAmB,aAAyB,aAAyB;AAC5E,MAAI,mBAAmB,cAAc,aAAa,WAAW;AAC7D,MAAI,iBAAiB,SAAS,SAAS,GAAG;AACxC,aAAS,IAAI,GAAG,IAAI,YAAY,YAAY,SAAS,GAAG,KAAK;AAC3D,eAAS,KAAK,GAAG,KAAK,YAAY,YAAY,SAAS,GAAG,MAAM;AAC9D,YAAI,iBAAiB;AACrB,YAAI,OAAO,KAAK,OAAO,YAAY,YAAY,SAAS,GAAG;AACzD,2BAAiB;AAAA,QACnB;AACA,YACE;AAAA,UACE,YAAY,YAAY,CAAC;AAAA,UACzB,YAAY,YAAY,IAAI,CAAC;AAAA,UAC7B,YAAY,YAAY,EAAE;AAAA,UAC1B;AAAA,QACF,GACA;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,4BAA4B,YAAwB,SAAkB;AAC7E,QAAM,OAAY,cAAc,OAAO;AACvC,QAAM,mBAAmB,cAAc,YAAY,IAAI;AACvD,MAAI,iBAAiB,SAAS,SAAS,GAAG;AACxC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,YAAwB,SAAkB;AACzE,MAAI,gBAAgB;AACpB,MAAI,gBAAgB;AACpB,MAAI,cAAc,WAAW,YAAY;AACzC,WAAS,IAAI,GAAG,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,gBAAgB,KAAK;AAC1E,QAAI,sBAAsB,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,GAAG;AACpE,sBAAgB;AAAA,IAClB,OAAO;AACL,sBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,iBAAiB;AAC1B;AAcA,SAAS,qBACP,kBACA,gBACA,IACA,QACA;AACA,MAAI,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC;AACpC,MAAI,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC;AACpC,MAAI,MAAM,eAAe,CAAC,IAAI,iBAAiB,CAAC;AAChD,MAAI,MAAM,eAAe,CAAC,IAAI,iBAAiB,CAAC;AAChD,MAAI,QAAQ,MAAM,MAAM,MAAM;AAC9B,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AACA,MAAI,QAAQ;AACV,QAAI,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;AAClC,aAAO,MAAM,IACT,iBAAiB,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,eAAe,CAAC,IACzD,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAAA,IAC/D;AACA,WAAO,MAAM,IACT,iBAAiB,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,eAAe,CAAC,IACzD,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAAA,EAC/D,OAAO;AACL,QAAI,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;AAClC,aAAO,MAAM,IACT,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,IACvD,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC;AAAA,IAC7D;AACA,WAAO,MAAM,IACT,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,IACvD,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC;AAAA,EAC7D;AACF;AAGA,IAAO,gBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../index.ts"],"sourcesContent":["import { Feature, Geometry, Polygon, LineString, MultiPoint } from \"geojson\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { polygonToLine } from \"@turf/polygon-to-line\";\nimport { booleanEqual } from \"@turf/boolean-equal\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\nimport { getGeom } from \"@turf/invariant\";\nimport { point } from \"@turf/helpers\";\n\n/**\n * Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than\n * the maximum dimension of the two source geometries and the intersection set is interior to\n * both source geometries.\n *\n * Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.\n * Other comparisons are not supported as they are outside the OpenGIS Simple Features spec and may give unexpected results.\n *\n * @function\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line1 = turf.lineString([[-2, 2], [4, 2]]);\n * var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * var cross = turf.booleanCrosses(line1, line2);\n * //=true\n */\nfunction booleanCrosses(\n feature1: Feature<any> | Geometry,\n feature2: Feature<any> | Geometry\n): boolean {\n var geom1 = getGeom(feature1);\n var geom2 = getGeom(feature2);\n var type1 = geom1.type;\n var type2 = geom2.type;\n\n switch (type1) {\n case \"MultiPoint\":\n switch (type2) {\n case \"LineString\":\n return doMultiPointAndLineStringCross(geom1, geom2);\n case \"Polygon\":\n return doesMultiPointCrossPoly(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"LineString\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doMultiPointAndLineStringCross(geom2, geom1);\n case \"LineString\":\n return doLineStringsCross(geom1, geom2);\n case \"Polygon\":\n return doLineStringAndPolygonCross(geom1, geom2);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n case \"Polygon\":\n switch (type2) {\n case \"MultiPoint\": // An inverse operation\n return doesMultiPointCrossPoly(geom2, geom1);\n case \"LineString\": // An inverse operation\n return doLineStringAndPolygonCross(geom2, geom1);\n default:\n throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n }\n default:\n throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n }\n}\n\nfunction doMultiPointAndLineStringCross(\n multiPoint: MultiPoint,\n lineString: LineString\n) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n var i = 0;\n while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n var incEndVertices = true;\n if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n incEndVertices = false;\n }\n if (\n isPointOnLineSegment(\n lineString.coordinates[i2],\n lineString.coordinates[i2 + 1],\n multiPoint.coordinates[i],\n incEndVertices\n )\n ) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n i++;\n }\n return foundIntPoint && foundExtPoint;\n}\n\nfunction doLineStringsCross(lineString1: LineString, lineString2: LineString) {\n // See if there are any intersection points between these two lines.\n const doLinesIntersect = lineIntersect(lineString1, lineString2);\n if (doLinesIntersect.features.length === 0) return false;\n\n // As soon as we find any intersect point that doesn't lie on the start or\n // end point of either input lineString, that's considered a crossing.\n for (const intersectPoint of doLinesIntersect.features) {\n if (\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString1.coordinates[0])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString1.coordinates[lineString1.coordinates.length - 1])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString2.coordinates[0])\n ) &&\n !booleanEqual(\n intersectPoint.geometry,\n point(lineString2.coordinates[lineString2.coordinates.length - 1])\n )\n ) {\n return true;\n }\n }\n\n // Every intersection point we tried fell on an end point (considered the\n // boundary) of one of the input lines. Not considered a crossing.\n return false;\n}\n\nfunction doLineStringAndPolygonCross(lineString: LineString, polygon: Polygon) {\n const line: any = polygonToLine(polygon);\n const doLinesIntersect = lineIntersect(lineString, line);\n if (doLinesIntersect.features.length > 0) {\n return true;\n }\n return false;\n}\n\nfunction doesMultiPointCrossPoly(multiPoint: MultiPoint, polygon: Polygon) {\n var foundIntPoint = false;\n var foundExtPoint = false;\n var pointLength = multiPoint.coordinates.length;\n for (let i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n if (booleanPointInPolygon(point(multiPoint.coordinates[i]), polygon)) {\n foundIntPoint = true;\n } else {\n foundExtPoint = true;\n }\n }\n\n return foundExtPoint && foundIntPoint;\n}\n\n/**\n * Is a point on a line segment\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {number[]} lineSegmentStart coord pair of start of line\n * @param {number[]} lineSegmentEnd coord pair of end of line\n * @param {number[]} pt coord pair of point to check\n * @param {boolean} incEnd whether the point is allowed to fall on the line ends\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(\n lineSegmentStart: number[],\n lineSegmentEnd: number[],\n pt: number[],\n incEnd: boolean\n) {\n var dxc = pt[0] - lineSegmentStart[0];\n var dyc = pt[1] - lineSegmentStart[1];\n var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n var cross = dxc * dyl - dyc * dxl;\n if (cross !== 0) {\n return false;\n }\n if (incEnd) {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0]\n : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1]\n : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n } else {\n if (Math.abs(dxl) >= Math.abs(dyl)) {\n return dxl > 0\n ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0]\n : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n }\n return dyl > 0\n ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1]\n : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n }\n}\n\nexport { booleanCrosses };\nexport default booleanCrosses;\n"],"mappings":";AACA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AACtC,SAAS,eAAe;AACxB,SAAS,aAAa;AAqBtB,SAAS,eACP,UACA,UACS;AACT,MAAI,QAAQ,QAAQ,QAAQ;AAC5B,MAAI,QAAQ,QAAQ,QAAQ;AAC5B,MAAI,QAAQ,MAAM;AAClB,MAAI,QAAQ,MAAM;AAElB,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,+BAA+B,OAAO,KAAK;AAAA,QACpD,KAAK;AACH,iBAAO,wBAAwB,OAAO,KAAK;AAAA,QAC7C;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,+BAA+B,OAAO,KAAK;AAAA,QACpD,KAAK;AACH,iBAAO,mBAAmB,OAAO,KAAK;AAAA,QACxC,KAAK;AACH,iBAAO,4BAA4B,OAAO,KAAK;AAAA,QACjD;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF,KAAK;AACH,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,wBAAwB,OAAO,KAAK;AAAA,QAC7C,KAAK;AACH,iBAAO,4BAA4B,OAAO,KAAK;AAAA,QACjD;AACE,gBAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,MACnE;AAAA,IACF;AACE,YAAM,IAAI,MAAM,cAAc,QAAQ,yBAAyB;AAAA,EACnE;AACF;AAEA,SAAS,+BACP,YACA,YACA;AACA,MAAI,gBAAgB;AACpB,MAAI,gBAAgB;AACpB,MAAI,cAAc,WAAW,YAAY;AACzC,MAAI,IAAI;AACR,SAAO,IAAI,eAAe,CAAC,iBAAiB,CAAC,eAAe;AAC1D,aAAS,KAAK,GAAG,KAAK,WAAW,YAAY,SAAS,GAAG,MAAM;AAC7D,UAAI,iBAAiB;AACrB,UAAI,OAAO,KAAK,OAAO,WAAW,YAAY,SAAS,GAAG;AACxD,yBAAiB;AAAA,MACnB;AACA,UACE;AAAA,QACE,WAAW,YAAY,EAAE;AAAA,QACzB,WAAW,YAAY,KAAK,CAAC;AAAA,QAC7B,WAAW,YAAY,CAAC;AAAA,QACxB;AAAA,MACF,GACA;AACA,wBAAgB;AAAA,MAClB,OAAO;AACL,wBAAgB;AAAA,MAClB;AAAA,IACF;AACA;AAAA,EACF;AACA,SAAO,iBAAiB;AAC1B;AAEA,SAAS,mBAAmB,aAAyB,aAAyB;AAE5E,QAAM,mBAAmB,cAAc,aAAa,WAAW;AAC/D,MAAI,iBAAiB,SAAS,WAAW,EAAG,QAAO;AAInD,aAAW,kBAAkB,iBAAiB,UAAU;AACtD,QACE,CAAC;AAAA,MACC,eAAe;AAAA,MACf,MAAM,YAAY,YAAY,CAAC,CAAC;AAAA,IAClC,KACA,CAAC;AAAA,MACC,eAAe;AAAA,MACf,MAAM,YAAY,YAAY,YAAY,YAAY,SAAS,CAAC,CAAC;AAAA,IACnE,KACA,CAAC;AAAA,MACC,eAAe;AAAA,MACf,MAAM,YAAY,YAAY,CAAC,CAAC;AAAA,IAClC,KACA,CAAC;AAAA,MACC,eAAe;AAAA,MACf,MAAM,YAAY,YAAY,YAAY,YAAY,SAAS,CAAC,CAAC;AAAA,IACnE,GACA;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAIA,SAAO;AACT;AAEA,SAAS,4BAA4B,YAAwB,SAAkB;AAC7E,QAAM,OAAY,cAAc,OAAO;AACvC,QAAM,mBAAmB,cAAc,YAAY,IAAI;AACvD,MAAI,iBAAiB,SAAS,SAAS,GAAG;AACxC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,YAAwB,SAAkB;AACzE,MAAI,gBAAgB;AACpB,MAAI,gBAAgB;AACpB,MAAI,cAAc,WAAW,YAAY;AACzC,WAAS,IAAI,GAAG,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,gBAAgB,KAAK;AAC1E,QAAI,sBAAsB,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,GAAG;AACpE,sBAAgB;AAAA,IAClB,OAAO;AACL,sBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,iBAAiB;AAC1B;AAcA,SAAS,qBACP,kBACA,gBACA,IACA,QACA;AACA,MAAI,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC;AACpC,MAAI,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC;AACpC,MAAI,MAAM,eAAe,CAAC,IAAI,iBAAiB,CAAC;AAChD,MAAI,MAAM,eAAe,CAAC,IAAI,iBAAiB,CAAC;AAChD,MAAI,QAAQ,MAAM,MAAM,MAAM;AAC9B,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AACA,MAAI,QAAQ;AACV,QAAI,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;AAClC,aAAO,MAAM,IACT,iBAAiB,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,eAAe,CAAC,IACzD,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAAA,IAC/D;AACA,WAAO,MAAM,IACT,iBAAiB,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,eAAe,CAAC,IACzD,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAAA,EAC/D,OAAO;AACL,QAAI,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;AAClC,aAAO,MAAM,IACT,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,IACvD,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC;AAAA,IAC7D;AACA,WAAO,MAAM,IACT,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,IACvD,eAAe,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC;AAAA,EAC7D;AACF;AAGA,IAAO,gBAAQ;","names":[]}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@turf/boolean-crosses",
3
- "version": "7.3.0",
3
+ "version": "7.3.2",
4
4
  "description": "Checks if two geometries cross each other.",
5
5
  "author": "Turf Authors",
6
6
  "contributors": [
7
7
  "Rowan Winsemius <@rowanwins>",
8
- "Denis Carriere <@DenisCarriere>"
8
+ "Denis Carriere <@DenisCarriere>",
9
+ "James Beard <@smallsaucepan>"
9
10
  ],
10
11
  "license": "MIT",
11
12
  "bugs": {
@@ -51,7 +52,7 @@
51
52
  "bench": "tsx bench.ts",
52
53
  "build": "tsup --config ../../tsup.config.ts",
53
54
  "docs": "tsx ../../scripts/generate-readmes.ts",
54
- "test": "npm-run-all --npm-path npm test:*",
55
+ "test": "pnpm run /test:.*/",
55
56
  "test:tape": "tsx test.ts"
56
57
  },
57
58
  "devDependencies": {
@@ -59,22 +60,22 @@
59
60
  "@types/tape": "^5.8.1",
60
61
  "benchmark": "^2.1.4",
61
62
  "boolean-shapely": "*",
62
- "glob": "^11.0.2",
63
+ "glob": "^11.1.0",
63
64
  "load-json-file": "^7.0.1",
64
- "npm-run-all": "^4.1.5",
65
65
  "tape": "^5.9.0",
66
66
  "tsup": "^8.4.0",
67
67
  "tsx": "^4.19.4",
68
68
  "typescript": "^5.8.3"
69
69
  },
70
70
  "dependencies": {
71
- "@turf/boolean-point-in-polygon": "7.3.0",
72
- "@turf/helpers": "7.3.0",
73
- "@turf/invariant": "7.3.0",
74
- "@turf/line-intersect": "7.3.0",
75
- "@turf/polygon-to-line": "7.3.0",
71
+ "@turf/boolean-equal": "7.3.2",
72
+ "@turf/boolean-point-in-polygon": "7.3.2",
73
+ "@turf/helpers": "7.3.2",
74
+ "@turf/invariant": "7.3.2",
75
+ "@turf/line-intersect": "7.3.2",
76
+ "@turf/polygon-to-line": "7.3.2",
76
77
  "@types/geojson": "^7946.0.10",
77
78
  "tslib": "^2.8.1"
78
79
  },
79
- "gitHead": "9f58a103e8f9a587ab640307ed03ba5233913ddd"
80
+ "gitHead": "099d9915467bacf45d554be4533fa9998c4efc88"
80
81
  }