From 374e82e07768ae9108b9bb05355b38bba6ecc183 Mon Sep 17 00:00:00 2001
From: vmaubert <v.maubert@code-troopers.com>
Date: Tue, 13 Feb 2024 11:15:54 +0100
Subject: [PATCH] refactor(npm): supprime geojson-rewind du projet (#998)

---
 knip.ts                                       |   2 +-
 package-lock.json                             | 197 ++----------------
 packages/api/package.json                     |   1 -
 packages/api/src/@types/geojson-rewind.d.ts   |   5 -
 ...20240116142111_migrate-point-to-geojson.ts |  48 +----
 packages/api/tsconfig.json                    |   1 -
 6 files changed, 22 insertions(+), 232 deletions(-)
 delete mode 100644 packages/api/src/@types/geojson-rewind.d.ts

diff --git a/knip.ts b/knip.ts
index 08dd9f172..d6afbd859 100644
--- a/knip.ts
+++ b/knip.ts
@@ -33,7 +33,7 @@ const config = {
       "project": "**/*.ts",
       ignoreDependencies: [
         // TODO 2023-12-28 ces dépendances semblent être "shadow" par les définitions bourrines .d.ts qu'on a mise
-        "geojson-rewind", "graphql-fields", "graphql-scalars", "html-to-text", "matomo-tracker",
+        "graphql-fields", "graphql-scalars", "html-to-text", "matomo-tracker",
         "@vitest/coverage-v8", "@pgtyped/cli"
       ]
     },
diff --git a/package-lock.json b/package-lock.json
index cad73c53f..50ccccb71 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4104,14 +4104,6 @@
       "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
       "dev": true
     },
-    "node_modules/@mapbox/geojson-area": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz",
-      "integrity": "sha512-bBqqFn1kIbLBfn7Yq1PzzwVkPYQr9lVUeT8Dhd0NL5n76PBuXzOcuLV7GOSbEB1ia8qWxH4COCvFpziEu/yReA==",
-      "dependencies": {
-        "wgs84": "0.0.0"
-      }
-    },
     "node_modules/@mapbox/geojson-rewind": {
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
@@ -12465,7 +12457,8 @@
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true
     },
     "node_modules/buffer-writer": {
       "version": "2.0.0",
@@ -13114,6 +13107,7 @@
       "version": "1.6.2",
       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
       "engines": [
         "node >= 0.8"
       ],
@@ -16272,20 +16266,6 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/geojson-rewind": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/geojson-rewind/-/geojson-rewind-0.3.1.tgz",
-      "integrity": "sha512-mdR8a2JjahsZ+pR3oav3XO+R4HpEomhjAwD+RkTQQdm5vE+AOhxH9x+3aaz8vVDb1r5oklUMM89zRW5xyOTiGw==",
-      "dependencies": {
-        "@mapbox/geojson-area": "0.2.2",
-        "concat-stream": "~1.6.0",
-        "minimist": "1.2.0",
-        "sharkdown": "^0.1.0"
-      },
-      "bin": {
-        "geojson-rewind": "geojson-rewind"
-      }
-    },
     "node_modules/geojson-vt": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
@@ -19675,7 +19655,8 @@
     "node_modules/minimist": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw=="
+      "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==",
+      "dev": true
     },
     "node_modules/minimist-options": {
       "version": "4.1.0",
@@ -26824,72 +26805,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/sharkdown": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz",
-      "integrity": "sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==",
-      "dependencies": {
-        "cardinal": "~0.4.2",
-        "minimist": "0.0.5",
-        "split": "~0.2.10"
-      },
-      "bin": {
-        "sharkdown": "sharkdown"
-      }
-    },
-    "node_modules/sharkdown/node_modules/ansicolors": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
-      "integrity": "sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w=="
-    },
-    "node_modules/sharkdown/node_modules/cardinal": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz",
-      "integrity": "sha512-3MxV0o9wOpQcobrcSrRpaSxlYkohCcZu0ytOjJUww/Yo/223q4Ecloo7odT+M0SI5kPgb1JhvSaF4EEuVXOLAQ==",
-      "dependencies": {
-        "ansicolors": "~0.2.1",
-        "redeyed": "~0.4.0"
-      },
-      "bin": {
-        "cdl": "bin/cdl.js"
-      }
-    },
-    "node_modules/sharkdown/node_modules/esprima": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
-      "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/sharkdown/node_modules/minimist": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
-      "integrity": "sha512-rSJ0cdmCj3qmKdObcnMcWgPVOyaOWlazLhZAJW0s6G6lx1ZEuFkraWmEH5LTvX90btkfHPclQBjvjU7A/kYRFg=="
-    },
-    "node_modules/sharkdown/node_modules/redeyed": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz",
-      "integrity": "sha512-pnk1vsaNLu1UAAClKsImKz9HjBvg9i8cbRqTRzJbiCjGF0fZSMqpdcA5W3juO3c4etFvTrabECkq9wjC45ZyxA==",
-      "dependencies": {
-        "esprima": "~1.0.4"
-      }
-    },
-    "node_modules/sharkdown/node_modules/split": {
-      "version": "0.2.10",
-      "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
-      "integrity": "sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ==",
-      "dependencies": {
-        "through": "2"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -28036,7 +27951,8 @@
     "node_modules/through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
     },
     "node_modules/through2": {
       "version": "2.0.5",
@@ -28390,7 +28306,8 @@
     "node_modules/typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+      "dev": true
     },
     "node_modules/typedarray-to-buffer": {
       "version": "3.1.5",
@@ -29343,11 +29260,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/wgs84": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz",
-      "integrity": "sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ=="
-    },
     "node_modules/whatwg-encoding": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
@@ -29994,7 +29906,6 @@
         "express-graphql": "^0.12.0",
         "express-jwt": "^8.4.1",
         "express-rate-limit": "^6.7.0",
-        "geojson-rewind": "^0.3.1",
         "graphql": "^16.6.0",
         "graphql-fields": "^2.0.3",
         "graphql-scalars": "^1.22.2",
@@ -36312,14 +36223,6 @@
       "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
       "dev": true
     },
-    "@mapbox/geojson-area": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz",
-      "integrity": "sha512-bBqqFn1kIbLBfn7Yq1PzzwVkPYQr9lVUeT8Dhd0NL5n76PBuXzOcuLV7GOSbEB1ia8qWxH4COCvFpziEu/yReA==",
-      "requires": {
-        "wgs84": "0.0.0"
-      }
-    },
     "@mapbox/geojson-rewind": {
       "version": "0.5.2",
       "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
@@ -42558,7 +42461,8 @@
     "buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true
     },
     "buffer-writer": {
       "version": "2.0.0",
@@ -42707,7 +42611,6 @@
         "express-graphql": "^0.12.0",
         "express-jwt": "^8.4.1",
         "express-rate-limit": "^6.7.0",
-        "geojson-rewind": "^0.3.1",
         "graphql": "^16.6.0",
         "graphql-fields": "^2.0.3",
         "graphql-scalars": "^1.22.2",
@@ -45615,6 +45518,7 @@
       "version": "1.6.2",
       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
         "inherits": "^2.0.3",
@@ -47957,17 +47861,6 @@
       "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
       "dev": true
     },
-    "geojson-rewind": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/geojson-rewind/-/geojson-rewind-0.3.1.tgz",
-      "integrity": "sha512-mdR8a2JjahsZ+pR3oav3XO+R4HpEomhjAwD+RkTQQdm5vE+AOhxH9x+3aaz8vVDb1r5oklUMM89zRW5xyOTiGw==",
-      "requires": {
-        "@mapbox/geojson-area": "0.2.2",
-        "concat-stream": "~1.6.0",
-        "minimist": "1.2.0",
-        "sharkdown": "^0.1.0"
-      }
-    },
     "geojson-vt": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
@@ -50450,7 +50343,8 @@
     "minimist": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw=="
+      "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==",
+      "dev": true
     },
     "minimist-options": {
       "version": "4.1.0",
@@ -55448,58 +55342,6 @@
         "kind-of": "^6.0.2"
       }
     },
-    "sharkdown": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/sharkdown/-/sharkdown-0.1.1.tgz",
-      "integrity": "sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==",
-      "requires": {
-        "cardinal": "~0.4.2",
-        "minimist": "0.0.5",
-        "split": "~0.2.10"
-      },
-      "dependencies": {
-        "ansicolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
-          "integrity": "sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w=="
-        },
-        "cardinal": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz",
-          "integrity": "sha512-3MxV0o9wOpQcobrcSrRpaSxlYkohCcZu0ytOjJUww/Yo/223q4Ecloo7odT+M0SI5kPgb1JhvSaF4EEuVXOLAQ==",
-          "requires": {
-            "ansicolors": "~0.2.1",
-            "redeyed": "~0.4.0"
-          }
-        },
-        "esprima": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
-          "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA=="
-        },
-        "minimist": {
-          "version": "0.0.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
-          "integrity": "sha512-rSJ0cdmCj3qmKdObcnMcWgPVOyaOWlazLhZAJW0s6G6lx1ZEuFkraWmEH5LTvX90btkfHPclQBjvjU7A/kYRFg=="
-        },
-        "redeyed": {
-          "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz",
-          "integrity": "sha512-pnk1vsaNLu1UAAClKsImKz9HjBvg9i8cbRqTRzJbiCjGF0fZSMqpdcA5W3juO3c4etFvTrabECkq9wjC45ZyxA==",
-          "requires": {
-            "esprima": "~1.0.4"
-          }
-        },
-        "split": {
-          "version": "0.2.10",
-          "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
-          "integrity": "sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ==",
-          "requires": {
-            "through": "2"
-          }
-        }
-      }
-    },
     "shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -56399,7 +56241,8 @@
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
     },
     "through2": {
       "version": "2.0.5",
@@ -56667,7 +56510,8 @@
     "typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+      "dev": true
     },
     "typedarray-to-buffer": {
       "version": "3.1.5",
@@ -57351,11 +57195,6 @@
       "dev": true,
       "peer": true
     },
-    "wgs84": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz",
-      "integrity": "sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ=="
-    },
     "whatwg-encoding": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
diff --git a/packages/api/package.json b/packages/api/package.json
index 9252f557e..29c994d97 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -69,7 +69,6 @@
     "express-graphql": "^0.12.0",
     "express-jwt": "^8.4.1",
     "express-rate-limit": "^6.7.0",
-    "geojson-rewind": "^0.3.1",
     "graphql": "^16.6.0",
     "graphql-fields": "^2.0.3",
     "graphql-scalars": "^1.22.2",
diff --git a/packages/api/src/@types/geojson-rewind.d.ts b/packages/api/src/@types/geojson-rewind.d.ts
deleted file mode 100644
index 180d37914..000000000
--- a/packages/api/src/@types/geojson-rewind.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare module 'geojson-rewind' {
-  function rewind<T>(gj: T, outer?: boolean): T
-  namespace rewind {}
-  export = rewind
-}
diff --git a/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts b/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
index be54da57f..9a406834c 100644
--- a/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
+++ b/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
@@ -2,8 +2,7 @@
 import { Knex } from 'knex'
 import { EtapeId } from 'camino-common/src/etape.js'
 import { isNotNullNorUndefined, isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools.js'
-import rewind from 'geojson-rewind'
-import { FeatureMultiPolygon, featureMultiPolygonValidator } from 'camino-common/src/perimetre.js'
+import { FeatureMultiPolygon } from 'camino-common/src/perimetre.js'
 import { TitreId } from 'camino-common/src/validators/titres'
 
 const etapesToNotMigrate = ['0NmsqYGVQJYKhFY22Ltt4NBV']
@@ -16,51 +15,10 @@ interface IGeoJson {
   features?: IGeoJson[] | null
 }
 
-const geojsonFeatureMultiPolygon = (points: any[]): FeatureMultiPolygon => {
-  const feature: FeatureMultiPolygon = {
-    type: 'Feature',
-    properties: {},
-    geometry: rewind(
-      {
-        type: 'MultiPolygon',
-        coordinates: geojsonMultiPolygonCoordinates(points),
-      },
-      false
-    ),
-  }
-
-  return featureMultiPolygonValidator.parse(feature)
+const geojsonFeatureMultiPolygon = (_points: any[]): FeatureMultiPolygon => {
+  throw new Error('Migration obsolète suite à la suppression de geojson-rewind du projet')
 }
 
-// convertit une liste de points
-// en un tableau 'coordinates' geoJson
-// (le premier et le dernier point d'un contour ont les mêmes coordonnées)
-const geojsonMultiPolygonCoordinates = (points: any[]) => multiPolygonContoursClose(multiPolygonCoordinates(points))
-
-// convertit une liste de points
-// [{groupe: 1, contour: 1, point: 1, coordonnees: {x: 1.111111, y: 1.111111}}]
-// en un tableau de 'coordinates': [[[[1.11111, 1.111111]]]]
-const multiPolygonCoordinates = (points: any[]): [number, number][][][] =>
-  points.reduce((res: [number, number][][][], p) => {
-    res[p.groupe - 1] = isNotNullNorUndefinedNorEmpty(res[p.groupe - 1]) ? res[p.groupe - 1] : []
-    res[p.groupe - 1][p.contour - 1] = isNotNullNorUndefinedNorEmpty(res[p.groupe - 1][p.contour - 1]) ? res[p.groupe - 1][p.contour - 1] : []
-    res[p.groupe - 1][p.contour - 1][p.point - 1] = [p.coordonnees.x, p.coordonnees.y]
-
-    return res
-  }, [])
-
-// duplique le premier point de chaque contour
-// en fin de contour pour fermer le tracé
-const multiPolygonContoursClose = (groupes: [number, number][][][]): [number, number][][][] =>
-  groupes.map(contours =>
-    contours.reduce((acc: [number, number][][], points) => {
-      points[points.length] = points[0]
-      acc.push(points)
-
-      return acc
-    }, [])
-  )
-
 // convertit des points
 // en un geojson de type 'FeatureCollection' de 'Points'
 const geojsonFeatureCollectionPoints = (points: any[]): IGeoJson | null => {
diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json
index 47316d9a0..0c15d5605 100644
--- a/packages/api/tsconfig.json
+++ b/packages/api/tsconfig.json
@@ -21,7 +21,6 @@
     "resolveJsonModule": true,
     "noEmit": true,
     "paths": {
-      "geojson-rewind": ["./src/@types/geojson-rewind"],
       "graphql-fields": ["./src/@types/graphql-fields"],
       "html-to-text": ["./src/@types/html-to-text"],
       "matomo-tracker": ["./src/@types/matomo-tracker"]
-- 
GitLab