code: function convertRings(rings, layout) {
    const flatRing = [];
    const outerRings = [];
    const holes = [];
    let i, ii;
    for (i = 0, ii = rings.length; i < ii; ++i) {
      flatRing.length = 0;
      deflateCoordinates(flatRing, 0, rings[i], layout.length);
      // is this ring an outer ring? is it clockwise?
      const clockwise = linearRingIsClockwise(flatRing, 0,
        flatRing.length, layout.length);
      if (clockwise) {
        outerRings.push([rings[i]]);
      } else {
        holes.push(rings[i]);
      }
    }
    while (holes.length) {
      const hole = holes.shift();
      let matched = false;
      // loop over all outer rings and see if they contain our hole.
      for (i = outerRings.length - 1; i >= 0; i--) {
        const outerRing = outerRings[i][0];
        const containsHole = containsExtent(
          new LinearRing(outerRing).getExtent(),
          new LinearRing(hole).getExtent()
        );
        if (containsHole) {
          // the hole is contained push it into our polygon
          outerRings[i].push(hole);
          matched = true;
          break;
        }
      }
      if (!matched) {
        // no outer rings contain this hole turn it into and outer
        // ring (reverse it)
        outerRings.push([hole.reverse()]);
      }
    }
    return outerRings;
  }
docs: Determines inner and outer rings.
  Checks if any polygons in this array contain any other polygons in this
  array. It is used for checking for holes.
  Logic inspired by: https://github.com/Esri/terraformer-arcgis-parser
  @param {Array<!Array<!Array<number>>>} rings Rings.
  @param {import("../geom/GeometryLayout.js").default} layout Geometry layout.
  @return {Array<!Array<!Array<!Array<number>>>>} Transformed rings.