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 🙏

© 2026 – Pkg Stats / Ryan Hefner

scouting

v2.0.10

Published

A scouting system for FRC teams, made by FRC Team 1540 the Flaming Chickens.

Readme

This project is now deprecated and not supported. Click here to see the new FRC scouter, ScoutKit.

For FRC Team 1540 The Flaming Chickens (http://www.team1540.org) scouting

Start Here:

This is a Node.js module intended to work with Electron.

The first thing is to get Electron set up and an html document.

In terminal: npm install scouting --save

Then in your .js file:

  window.jQuery = window.$ = require('jquery');
  const scout = require('scouting');
  scout.init('blank', true);

Then put this in the <head>:

  <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">
  <link rel="stylesheet" href="node_modules/noty/lib/noty.css">

And this at the end of the <body> before your .js file:

  <script>
    window.jQuery = window.$ = require('jquery');
    var Popper = require('popper.js');
  </script>
  <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script>
  <script src="node_modules/noty/lib/noty.js"></script>

Question Types:

Checkboxes:

  scout.checkbox(
    '.place-to-put',
    'Title',
    [
      {
        text: 'This is displayed',
        color: 'This can be a Bootstrap color class or a hexadecimal color value (no names or RGB values yet)',
        value: 'Default value is the displayed text, but can manually set the value here.'
      },
      {
        text: 'This is the second option. This has no color nor value so the color will be "info" and the value will be this text.'
      }
    ],
    'jsonkey',
    true,
    'optional-classes'
  );

Checkboxes that default to btn-outline-info but color can be changed to the different Bootstrap color classes or a hexadecimal color value (no names or RGB values yet). The color and value keys are optional, but text is required. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Counter:

  scout.counter(
    '.place-to-put',
    'Title',
    // Increment
    1,
    'jsonkey',
    true,
    'optional-classes'
  );

A counter that has buttons to increment up and down. The up and down values can be customized and floats are not supported. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Counter:

  scout.cycle(
    '.place-to-put',
    'Title',
    [
      {
        text: 'This is displayed',
        color: 'This can be a Bootstrap color class or a hexadecimal color value (no names or RGB values yet)',
        value: 'Default value is the displayed text, but can manually set the value here.'
      },
      {
        text: 'This is the second option. This has no value so the value will be this text.',
        color: '#abcdef'
      }
    ],
    'jsonkey',
    true,
    'optional-classes'
  );

A group of radio buttons that contains a submit button so the user can input value multiple times. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Input:

  scout.input(
    '.place-to-put',
    'Title',
    'Placeholder'
    'jsonkey',
    true,
    'optional-classes'
  );

An HTML <input> that saves automatically. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Radio Buttons:

  scout.radio(
    '.place-to-put',
    'Title',
    [
      {
        text: 'This is displayed',
        color: 'This can be a Bootstrap color class or a hexadecimal color value (no names or RGB values yet)',
        value: 'Default value is the displayed text, but can manually set the value here.'
      },
      {
        text: 'This is the second option. This has no value so the value will be this text.',
        color: '#abcdef'
      }
    ],
    'jsonkey',
    true,
    'optional-classes'
  );

Radio buttons that is customizable with as many choices as possible. Text and color is required, but value is not. If no value is provided, the value defaults to the text. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Noty:

Taken from Noty

  scout.noty();

Returns a Noty object. .show() will display the Noty, as shown in the Noty docs. See Noty documentation for more information. (https://ned.im/noty/).

Note:

To make Noty work, put this in the <head>:

  <link rel="stylesheet" href="node_modules/noty/libs/noty.css">

And also put this before your .js file:

  <script src="node_modules/noty/lib/noty.js"></script>

Slider:

Simplified from noUiSlider

  scout.slider(
    '.place-to-put',
    'Title',
    // Starting places
    [25, 50, 75],
    // Color
    ['red', '#000', 'purple', 'green'],
    'jsonkey',
    true
  );

A slider simplified from noUiSlider. The last boolean is whether or not the question is required.

Textarea:

  scout.textarea(
    '.place-to-put',
    'Title',
    'Placeholder'
    'jsonkey',
    true,
    'optional-classes'
  );

An HTML <textarea> that saves automatically as you type. The boolean is whether or not the question is required. The last argument is not required and is for optional classes separated by spaces.

Other Useful Functions:

Chart.js:

Taken from Chart.js

  scout.chart(
    ctx,
    {...}
  );

Returns a chart.js object. ctx is the <canvas> element where the chart will go. See the chart.js docs for more information on making charts (http://www.chartjs.org/docs/latest/).

Done:

  scout.done(
    '.place-to-put',
    false,
    'optional-classes'
  );

A done button that saves the file and refreshes the app. The second argument is optional and defaults to true. If true, then the done button will replace the next button, and if false, then the done button will float. The last argument is not required and is for optional classes separated by spaces.

Login:

  scout.login(
    '.place-to-put',
    1540, // Code to access the change role page. Only numbers.
    'optional-classes'
  );

A login prompt that removes the back/next buttons and shows them when logged in. Make sure there is a scouts.json file present in the scouting directory (../scouting/) that contains key value pairs for members to login. The key should be an integer, and the value should be the name to display once logged in. scout.login() still needs to go inside a scout.page(); it does not automatically generate a page. The last argument is not required and is for optional classes separated by spaces.

Pie:

Simplified from Chart.js

  scout.pie(
    '.place-to-put',
    'Title',
    // Slices
    [25, 50, 25],
    // Color
    ['red', '#000', 'purple']
  );

A pie chart simplified from Chart.js.

New Page:

  scout.page(
    'Title',
    [6, 6],
    'optional-classes'
  );

Creates a new page with back/next buttons. Does not have a back button if it is the first page, and likewise does not have a next button if it is the next page. Also does not have a next button if a done button replaces it. NAMING CONVENTION: .cell-title-1 <-- 1 is the leftmost cell, array.length is the rightmost cell Uses the Bootstrap grid system. Numbers must add up to twelve. The last argument is not required and is for optional classes separated by spaces.

Text:

  scout.text(
  	'.place-to-put',
  	'Text', // Point font
  	'Font size',
    'optional-classes'
  );

Database:

Database:

  scout.database('2017orgg');

Argument is the TBA event key. Visit thebluealliance.com to check an event's event key. Make sure there is a good internet connection the first time scout.database() is executed!

Changelog

2.0.7 (2018-01-)

  • Added: Cycle question option.
  • Added: Optional classes.
  • Added: Required questions.
  • Added: fs-extra dependency.
  • Added: Option to not save files.
  • Fixed: Saving files.
  • Fixed: Changed placement of next and back buttons for scout.init('stand')

2.0.6 (2018-01-07)

  • Fixed: scout.blank().
  • Fixed: Saving files for any type other than 'stand'.

2.0.5 (2017-12-31)

  • Added: scout.multipleChoice() is changed to scout.radio() because multipleChoice takes too long to type.
  • Added: scout.radio() and scout.checkbox() color key and take colors other than Bootstrap colors.
  • Fixed: scout.radio() buttons are created by JS objects instead of arrays.
  • Fixed: Checkbox buttons are also created by JS objects.
  • Fixed: Checkboxes save the correct values for real now.
  • Fixed: scout.init('blank'); creates a blank page.
  • Fixed: Database can work without internet connection after the first execution.

2.0.4 (2017-11-29)

  • Fixed: Readme.

2.0.3 (2017-11-29)

  • Added: Pie chart added optional labels.
  • Added: scout.chart(); to create custom Chart.js charts.
  • Added: Text with scout.text();.
  • Fixed: Change role with custom code.
  • Fixed: Match info bar takes up less space.
  • Fixed: Charts.
  • Fixed: Checkbox saving wrong values to json file.

2.0.2 (2017-10-07)

  • Added: Change team number.
  • Fixed: Done button.

2.0.1 (2017-10-04)

  • Added: Match number verification.
  • Fixed: Readme.
  • Fixed: First page not showing up.
  • Fixed: Match info bar not displaying correctly.

2.0.0 (2017-10-02)

  • Added: Database with scout.database();.
  • Added: Database option on scout.init('database');
  • Added: Autosave support for pit apps.
  • Added: Team input for pit apps.

1.2.2 (2017-09-05)

  • Added: Change scout id by clicking on the scout name in the infobar.
  • Fixed: Autosave progress if app crash.
  • Fixed: Change match number button not showing.
  • Fixed: Team number did not reflect match number change when using input to change match number.

1.2.1 (2017-08-29)

  • Added: Noty as a dependency for notifications.
  • Added: scout.noty(); so no need to npm install noty.
  • Fixed: First page not showing.
  • Removed: Dialogs.
  • Removed: scout.dialogs();.
  • Removed: scout.save();. Use scout.done(); instead.

1.2.0 (2017-08-27)

  • Added: Short answer (input).
  • Added: Dialogs (from Dialogs, so no need to separately npm install).
  • Added: Scout number in the infobar after login.
  • Added: Done button to quit scouting app.
  • Added: Autosave as questions are filled in.
  • Deprecated: Save button.
  • Fixed: Make sure that scout.init(/* 'stand' or 'pit' */); is instantiated first.
  • Fixed: Make sure that scout.init(/* 'stand' or 'pit' */); is not instantiated multiple times.

1.1.1 (2017-08-25)

  • Security: Readme links

1.1.0 (2017-08-25)

  • Added: Pit scout functionality. Use scout.init('stand') for stand scouting and scout.init('pit') for pit scouting.
  • Changed: Save button can replace next button with false parameter passed.
  • Changed: scout.page('Name', [12]); uses the Bootstrap grid system, second parameter is an array that indicates how many size of cell (one row is 12 cells).
  • Fixed: Now need to login to go to next page if scout.login('.place-to-put') is used.
  • Fixed: Removed back button from the first page and the next button from the last page.

1.0.1 (2017-08-10)

  • Added: Readme.

1.0.0 (2017-08-10)

  • Published Package.

Unreleased

2.1.0

  • Added: Button that pulls from github and reinstalls package using scout.update();
  • Added: Save to flashdrive with scout.flashdrive();
  • Added: scout.grid(); for a grid question.

Save to Flashdrive

  scout.flashdrive();

Update

  scout.update();

Grid:

  scout.grid(
    '.place-to-put',
    'Title',
    ['column 1', 'column 2', 'etc'],
    ['option 1', 'option 2', 'etc']
  );

A simple grid input system for questions with the same options. The buttons will display the options. Make sure that the column titles are not the same as each other or any other json keys because the title of each column is the json key for that column.

3.0.0

  • Added: Analysis software.

Created by Tristan (theamazingness)

Maintained by the Non-Robot Software Department of Team 1540 The Flaming Chickens