Skip to content

Playground ​

Example Key Hierarchy ​

ts
import { defineKeyHierarchy } from 'key-hierarchy'

const keys = defineKeyHierarchy((dynamic) => ({
  users: {
    getAll: true,
    create: true,
    byId: dynamic<string>().extend({
      get: true,
      update: true,
      delete: true,
      posts: {
        getAll: true,
        byId: dynamic<string>().extend({
          get: true,
          update: true,
          delete: true,
        }),
      },
    }),
  },
}))

Interactive Visualizer ​

πŸ“users["users"]
πŸ“„getAll["users","getAll"]
πŸ“„create["users","create"]
βš™οΈbyId( ) ["users",["byId","user-123"]]
πŸ“„get["users",["byId","user-123"],"get"]
πŸ“„update["users",["byId","user-123"],"update"]
πŸ“„delete["users",["byId","user-123"],"delete"]
πŸ“posts["users",["byId","user-123"],"posts",["byId","post-456"]]
πŸ“„getAll["users",["byId","user-123"],"posts","getAll"]
βš™οΈbyId( ) ["users",["byId","user-123"],"posts",["byId","post-456"]]
πŸ“„get["users",["byId","user-123"],"posts",["byId","post-456"],"get"]
πŸ“„update["users",["byId","user-123"],"posts",["byId","post-456"],"update"]
πŸ“„delete["users",["byId","user-123"],"posts",["byId","post-456"],"delete"]

Released under the MIT License.