#!/usr/bin/env node const load = require('load-json-file'); const write = 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 = load.sync(packagePath); pckg.dependencies = updateDependencies(pckg); pckg.devDependencies = updateDevDependencies(pckg); write.sync(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 v5.x switch (name) { case 'geojson-rbush': dependencies[name] = '2.1.0'; break; case 'topojson-client': case 'topojson-server': dependencies[name] = '3.x'; break; // JSTS based modules: case '@turf/buffer': case '@turf/intersect': case '@turf/union': case '@turf/difference': case '@turf/dissolve': case '@turf/hex-grid': case '@turf/mask': case '@turf/square-grid': case '@turf/triangle-grid': case '@turf/interpolate': dependencies[name] = '*'; break; case 'jsts': case 'jsts-es': case '@turf/point-on-surface': case '@turf/line-distance': 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('rollup-plugin-uglify'); dev.delete('uglify-js'); dev.delete('@turf/helpers'); dev.set('rollup', '*') .set('tape', '*') .set('@std/esm', '*') .set('benchmark', '*').forEach((version, name) => { devDependencies[name] = '*'; }); return devDependencies; }