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

@operate-first/probot-issue-form

v1.0.2

Published

Probot extension to parse issues created from issue forms

Downloads

5

Readme

Probot issue form parser

This extension provides a ready to use parser for issues created via issue forms.

Installation

npm install --save @operate-first/probot-issue-form

Overview

Library exposes a single fuction parse. It accepts probot context for issue.created or issue.modified events and returns a promise which resolves to a record mapping.

Usage

const issueForm = require('@operate-first/probot-issue-form');

module.exports = app => {
    app.on('issues.created', async(context) => {
        try {
            const data = await issueForm.parse(context);
        } catch {
            app.log.info('Issue was not created using Issue form template (the YAML ones)')
        }
    });
}

Supported fields

See upstream documentation for API specification, schema and details.

Input

Textual response field which allows a single line response only.

Example with ID

Issue template:

...
body:
  - type: input
    id: thisIsInput
    attributes:
      label: This is input field

Issue body:

### This is input field

some value

Result:

{thisIsInput: "some value"}

Example without ID

Issue template:

...
body:
  - type: input
    attributes:
      label: This is input field

Issue body:

### This is input field

some value

Result:

{this-is-input-field: "some value"}

This translation of labels to IDs is available for all the other input field types as well.

No response example

Issue template:

...
body:
  - type: input
    attributes:
      label: This is input field

Issue body:

### This is input field

_No response_

Result:

{this-is-input-field: ""}

Checkboxes

Checkboxes are parsed into an array of selected options.

Example

Issue template:

...
body:
  - type: checkboxes
    id: thisIsCheckbox
    attributes:
      label: Use these checkboxes
      options:
        - label: First item
        - label: Second item
        - label: Third item

Issue body:

### Use these checkboxes

- [ ] First item
- [X] Second item
- [X] Third item

Result:

{thisIsCheckbox: ["Second item", "Third item"]}

No response example

Issue template:

...
body:
  - type: checkboxes
    id: thisIsCheckbox
    attributes:
      label: Use these checkboxes
      options:
        - label: First item
        - label: Second item
        - label: Third item

Issue body:

### Use these checkboxes

- [ ] First item
- [ ] Second item
- [ ] Third item

Result:

{thisIsCheckbox: []}

Dropdown

Since dropdowns allows user to select multiple options (when flag mutliple is truthy), they are parsed into array of selected options, similarly to checkboxes.

Example

Issue template:

...
body:
  - type: dropdown
    id: thisIsDropdown
    attributes:
      label: Use this dropdown
      options:
        - First item
        - Second item
        - Third item

Issue body:

### Use this dropdown

First item

Result:

{thisIsDropdown: ["First item"]}

Example with multiple options allowed

Issue template:

...
body:
  - type: dropdown
    id: thisIsDropdown
    attributes:
      label: Use this dropdown
      multiple: true
      options:
        - First item
        - Second item
        - Third item

Issue body:

### Use this dropdown

First item, Second item

Result:

{thisIsDropdown: ["First item", "Second item"]}

No response example

Issue template:

...
body:
  - type: dropdown
    id: thisIsDropdown
    attributes:
      label: Use this dropdown
      options:
        - First item
        - Second item
        - Third item

Issue body:

### Use this dropdown

_No response_

Result:

{thisIsDropdown: []}

Textarea

Type supports multiline text responses which can contain markdown formatting. There's also an optional flag render, which wraps the response into a codeblock (```), this extension removes this wrapping and returns the content only.

Example

Issue template:

...
body:
  - type: textarea
    id: thisIsTextarea
    attributes:
      label: Use this textarea

Issue body:

### Use this textarea

value
can
be
multiline

Result:

{thisIsTextarea: "value
can
be
multiline"}

Example with render

Issue template:

...
body:
  - type: textarea
    id: thisIsTextarea
    attributes:
      label: Use this textarea
      render: true

Issue body:

### Use this textarea

```true
text
```

Result:

{thisIsTextarea: "text"}

No response example

Issue template:

...
body:
  - type: textarea
    id: thisIsTextarea
    attributes:
      label: Use this textarea

Issue body:

### Use this textarea

_No response_

Result:

{thisIsTextarea: ""}

Markdown

Markdown field is not propagated to issue body, hence we ignore it.