@exposition/sdk
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

🧰 @exposition/sdk

Utils of the @exposition library, to create and update the state in a non-mutating way.

Install

pnpm add -D @exposition/sdk
yarn add -D @exposition/sdk
npm install -D @exposition/sdk

createExpositionState

Create an Exposition state with all necessary data. 🔮

  • Cast the config as const to get full type support. (as seen on line 8)
  • The first options item will be set as the initialValue of the Scenario
import { createExpositionState } from '@exposition/sdk'

// ✨ Cast the input config `as const` to get full type support
const expositionState = createExpositionState({
  auth: {
    options: ['valid ✅', 'deny ❌']
  },
  user: {
    age: {
      options: ['under 18 🐣', '18 🐓', 'over 18 🦖']
    },
    avatar: {
      options: ['no avatar 💬', 'image 🤳']
    }
  }
} as const)

You can also create subgroups by defining further elements inside the configuration file as you can see in this example. The last option MUST have an options key for internal type inference.

import { createExpositionState } from '@exposition/sdk'

const expositionState = createExpositionState({
  user: {
    age: {
      options: ['under 18 🐣', '18 🐓', 'over 18 🦖']
    },
    avatar: {
      options: ['no avatar 💬', 'image 🤳']
    },
    auth: {
      options: ['valid ✅', 'deny ❌']
    },
    rights: {
      users: {
        create: {
          options: ['yes ✅', 'no ❌']
        },
        read: {
          options: ['yes ✅', 'no ❌']
        },
        update: {
          options: ['yes ✅', 'no ❌']
        },
        delete: {
          options: ['yes ✅', 'no ❌']
        }
      }
    }
  }
} as const)

🔗 Source Code

updateExpositionValues

Update the values of the given ExpositionState and create a new ExpositionState state. 🆕

const expositionState = createExpositionState({
  autobot: { options: ['Optimus Prime 🚚', 'Bumblebee 🚗'] },
  decepticon: { options: ['Megatron ✈️', 'Starscream 🛩️'] },
} as const)

const updatedExposition = updateExpositionValues(
  expositionState,
  { autobot: 'Bumblebee 🚗' }
)

getExpositionValues(updatedExposition)
// { autobot: 'Bumblebee 🚗', decepticon: 'Megatron ✈️' }

🔗 Source Code

getExpositionValues

Extract the current values from a given ExpositionState. 📃

const expositionState = createExpositionState({
  base: {
    options: [
      '🍚 Rice - Cool',
      '🍝 Pasta - Mama Mia',
    ],
  },
})

getExpositionValues(expositionState) // { base: "🍚 Rice - Cool" }

🔗 Source Code

getInitialExpositionValues

Extract the initials values from a given ExpositionState. 🦖

const expositionState = createExpositionState({
  progress: {
    options: [
      '🐛 Small',
      '🦋 Big',
    ],
  },
})

const updatedExposition = updateExpositionValues(expositionState, { progress: '🦋 Big' })

getInitialExpositionValues(updatedExposition) // { progress: "🐛 Small" }

🔗 Source Code

resetExpositionValues

Reset the values of a given ExpositionState to their initialValue.

const expositionState = createExpositionState({
  character: { options: ['Dio 🌎', 'JoJo 🌟'] },
} as const)

const updatedExposition = updateExpositionValues(
  expositionState,
  { character: 'JoJo 🌟' }
)
getExpositionValues(updatedExposition) // { character: "JoJo 🌟" }

const revertedExposition = resetExpositionValues(updatedExposition)
getExpositionValues(revertedExposition) // { character: "Dio 🌎" }

🔗 Source Code

Readme

Keywords

Package Sidebar

Install

npm i @exposition/sdk

Weekly Downloads

47

Version

0.5.0

License

MIT

Unpacked Size

25.9 kB

Total Files

6

Last publish

Collaborators

  • h2xd