Source: nodes.js

import { check } from "./helpers/check.js";
/**
 * @function nodes
 * @summary Retrieve geometry nodes
 * @param {object|array} data - A GeoJSON FeatureCollection, an array of features, an array of geometries, a single feature or a single geometry.
 * @returns {object|array} - A GeoJSON FeatureCollection, an array of features, an array of geometries, a single feature or a single geometry (it depends on what you've set as `data`).
 * @example
 * geotoolbox.nodes(*a geojson*)
 */

export function nodes(data) {
  const handle = check(data);
  let x = handle.import(data);

  let features = [];

  x.features.forEach((d) => {
    let n = d.geometry.coordinates.flat(Infinity);
    let f = [];
    for (let i = 0; i < n.length; i = i + 2) {
      f.push({
        type: "Feature",
        properties: d.properties,
        geometry: { type: "Point", coordinates: [n[i], n[i + 1]] },
      });
    }
    features.push(f);
  });

  let result = {
    type: "FeatureCollection",
    name: "nodes",
    features: features.flat(),
  };

  return handle.export(result);
}