Skip to content

Roadmap

Sascha Klatt edited this page Apr 17, 2021 · 25 revisions

v0.11.x

  • Features
    • option to fill up selected values that are outside the grid with undefined cells, so that result dimensions equal the requested dimensions (e.g. in getSubGrid(), crop(), ...)
    • rotate around an anchor point
    • search
      • findLast(grid, searchValue, walk): GridCell
      • lastPosition(grid, searchValue, walk): GridPosition
    • transformers
      • setCells({position, value}, {position, value}, ...) set multiple cells at once
      • setRows({y, row}, {y, row}, ...) set multiple cells at once
      • setColumns({x, column}, {x, column}, ...) set multiple cells at once
      • addColumnsLeft(columns)
      • addColumnsRight(columns)
      • addRowsLeft(rows)
      • addRowsRight(rows)
      • concat(otherGrid)
    • selectors
      • outline: selectOutline(subGrid)
      • edge: selectEdges() (like outline but inside the grid instead of outside)
      • corners: selectCorners()

v1.0.0

Considered improvements

  • Features
    • Sorting
    • transformers
      • reshape(newShape) sets a new shape, where the number of cells must remain the same
      • morph that is like reduce but must return a new valid grid, so that it's a valid grid-transformer
      • moveSubGrid(subGridArea, targetPosition)
    • walkers
      • provide walkers for createGrid
      • should be able to iterate just over a subset of cells
      • provide more walkers
    • performance
      • measure & improve
    • path module
      • path search algorithms
      • weighted paths
    • intersection of three or more areas
    • support typed arrays
    • infinite iterators (outside values/indexes are mapped to inside ones, e.g. x = columnCount -> x = 0, x = columnCount + 1 -> x = 1, ...)
    • pretty printed grid with toString() for debugging
    • get random cells: from the entire grid or a specific area
    • Look at Linear Algebra with JS
  • CI/CD pipeline
    • consider using semantic-release
    • use github ci or travis or similar
    • build dist
    • tag commit
    • trigger update docs website
  • Docs
    • add more badges
    • find out minimal nodejs version and set it in package.engines
    • encourage contribution (add badge)
    • add examples folder with real examples
  • Tooling
    • create index.html that holds links to docs / stats / coverage
    • test bundles, see Run tests agains compiled bundles
    • add benchmark/performance tests to detect bottlenecks and inefficient algorithms
    • lint that tests import only from src/index.ts or src/types.ts
    • setup jsdelivr for umd bundle
  • Spread the word
Clone this wiki locally