npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@nubz/gds-task-list-ops

v0.4.3

Published

Control GDS task list states for prototypes and other nodejs apps

Downloads

11

Readme

example workflow Coverage Status

GDS task list ops

Making a GDS task list work in a GOVUK prototype. Report the latest status for each task and provide a link that represents the next thing required of a task.

Task lists need data modelling, we need to describe the task list in a schema.

A schema is essentially an object containing tasks, tasks contain page models and page models contain fields. This package provides tools to compare the session data with the schema and return a status object defining the status of each task and a link URL for the first page that is invalid within that task, this link URL should be used in the task list template as the link to enter that task. If the task is deemed complete then the link should go into the Check Your Answers page for that task where users can review their answers and change any if required.

Examples

Examples of simple and complex use cases can be seen on https://prototype-strategies.herokuapp.com/task-lists/

Schema description

The PageModel definition is as required in the @nubz/gds-validation package as this is what is used to tell us whether pages are valid. It is added to this package as a peer dependency.

// using TypeScript interfaces as documentation

interface Schema {
  [key: String]: TaskModel
}

interface TaskModel {
  title: String
  customTitle?: (data: Payload) => String // if the task title is dependendent on payload content
  path: String
  summaryPath: String
  pages: PageMap
}

interface PageMap {
  [key: String]: PageModel
}

Responses

returnTaskList accepts the schema and the data set to compare against - usually req.session.data The response is of the following type

interface TaskListStatusMap {
    [key: TaskName]: TaskListStatus
}

interface TaskListStatus {
    status: Status
    link: String // a uri to the first page that is invalid within the task
    title: String // the value of the `title` property for this task in your schema
}
type TaskName = String // name/key of task in your schema model
type Status = 'complete' | 'in-progress' | 'to-do' | 'cannot-start'