#!/usr/bin/env node const { loadJsonFileSync } = require("load-json-file"); const { writeJsonFileSync } = require("write-json-file"); const path = require("path"); const { glob } = require("glob"); // Update package.json glob .sync(path.join(__dirname, "..", "packages", "turf-*", "package.json")) .forEach((packagePath) => { const pckg = loadJsonFileSync(packagePath); // pckg.dependencies = updateDependencies(pckg); pckg.devDependencies = updateDevDependencies(pckg); writeJsonFileSync(packagePath, pckg, { indent: 2 }); }); function entries(obj) { return Object.keys(obj || {}).map((key) => [key, obj[key]]); } function updateDependencies(pckg) { const dependencies = {}; new Map(entries(pckg.dependencies)).forEach((version, name) => { // Update dependencies to Major releases switch (name) { case "geojson-rbush": dependencies[name] = "2.x"; break; case "topojson-client": case "topojson-server": dependencies[name] = "3.x"; break; case "jsts": case "jsts-es": case "@turf/point-on-surface": case "@turf/line-distance": case "@turf/inside": case "@turf/point-on-line": case "@turf/nearest": throw new Error(`${pckg.name} module has invalid dependency ${name}`); default: dependencies[name] = version; } }); // All modules will have helpers to handle the internal TypeScript definitions if (pckg.name !== "@turf/helpers") dependencies["@turf/helpers"] = "^5.0.4"; return dependencies; } function updateDevDependencies(pckg) { const devDependencies = {}; const dev = new Map(entries(pckg.devDependencies)); dev.delete("uglify-js"); dev.delete("@turf/helpers"); dev.delete("rollup-plugin-node-resolve"); dev.delete("rollup-plugin-uglify"); dev.delete("rollup-plugin-commonjs"); dev.delete("rollup-plugin-buble"); dev .set("rollup", "*") .set("tape", "*") .set("@std/esm", "*") .set("benchmark", "*") .forEach((version, name) => { devDependencies[name] = "*"; }); return devDependencies; }