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

@fanesz/browser-activity-tracker

v1.0.3

Published

In accordance with its name, this is a module that contains functions to track whatever activities are carried out by the user.

Downloads

4

Readme

Browser Activity Tracker · GitHub license PRs Welcome

In accordance with its name, this is a module that contains functions to track whatever activities are carried out by the user.

The tracked activities are switching applications, changing browser tabs, mouse clicks, keyboard presses, and when the mouse enters/exits specific components.

Installation

npm i @fanesz/browser-activity-tracker

Usage

Application and Browser Tab Tracker

It is tracked when the user is not focused on the browser, such as when opening other applications, pressing the Windows key, using Alt-Tab to switch applications, changing browser tab, and so on.

  • Activites: aplIn, aplOut, pagein, pageOut
import { useState } from 'react';
import { pageTracker } from "@fanesz/browser-activity-tracker"

export default function App() {
  const [isStart, setIsStart] = useState(false);
  // You can change isStart with button or something
  // because the result of pageActivities only triggered after
  // isStart changed from true to false
  
  const pageActivities = pageTracker(isStart);
  // pageActivities returns an array of objects
  // where each object contains activity names and timestamps

  return (
    <div>
      <button onClick={() => setIsStart(prev => !prev)}>
        {isStart ? 'stop' : 'start'}
      </button>

      {pageActivities.map((item) => (
        <div>
          {item.activity} - {item.timestamp.toLocaleTimeString()}
        </div>
      ))}

      {/*
        example result when switching aplication and then switching browser tab
        aplOut - 11:02:44 PM
        aplIn - 11:02:44 PM
        pageOut - 11:02:45 PM
        pageIn - 11:02:46 PM
      */}
    </div>
  )
}

Keyboard Tracker

It is tracked when the user press any key of the keyboard.

  • Activites: {key} pressed, {key} released
import { useState } from 'react';
import { keyboardTracker } from "@fanesz/browser-activity-tracker"

export default function App() {
  const [isStart, setIsStart] = useState(false);
  const keyboardActivity = keyboardTracker(isStart);

  return (
    <div>
      <button onClick={() => setIsStart(prev => !prev)}>
        {isStart ? 'stop' : 'start'}
      </button>

      {keyboardActivity.map((item) => (
        <div>
          {item.activity} - {item.timestamp.toLocaleTimeString()}
        </div>
      ))}

      {/*
        example result when user do ctrl+c
        Control pressed - 11:09:36 PM
        c pressed - 11:09:37 PM
        c released - 11:09:37 PM
        Control released - 11:09:37 PM
      */}
    </div>
  )
}

Mouse Tracker

It is tracked when user do a click, and moving in/out on specific component.

  • Activites: mouseClick, '
import { useState } from 'react';
import { mouseTracker } from "@fanesz/browser-activity-tracker"

export default function App() {
  const [isStart, setIsStart] = useState(false);
  const [mouseActivity, MouseComponent] = mouseTracker(isStart);

  return (
    <div>
      <MouseComponent className="your class">
        This is the section that tracking mouse in and out.
      </MouseComponent>

      <button onClick={() => setIsStart(prev => !prev)}>
        {isStart ? 'stop' : 'start'}
      </button>

      {mouseActivity.map((item) => (
        <div>
          {item.activity} - {item.timestamp.toLocaleTimeString()}
        </div>
      ))}

      {/* 
        example result when user do cursor in, double click, 
        and cursor out on MouseComponent component
        mouseIn - 11:16:37 PM
        mouseClick - 11:16:37 PM
        mouseClick - 11:16:38 PM
        mouseOut - 11:16:39 PM 
      */}
    </div>
  )
}

Some Useful Function

Counting total Copy pressed (ctrl+c)

import { useEffect, useState } from 'react';
import { keyboardTracker, totalCopy } from "@fanesz/browser-activity-tracker"

export default function App() {
  const [isStart, setIsStart] = useState(false);
  const keyboardActivity = keyboardTracker(isStart);
  const [copyPressed, setCopyPressed] = useState(0);

  useEffect(() => {
    setCopyPressed(totalCopy(keyboardActivity));
  }, [isStart]);

  return (
    <div>
      <button onClick={() => setIsStart(prev => !prev)}>
        {isStart ? 'stop' : 'start'}
      </button>

      Total ctrl+c pressed: {copyPressed}
    </div>
  )
}

Typescript

Because the tracker function return an array of object, you can import TActivity from the module.

import { useState } from 'react';
import { keyboardTracker, TActivity } from "@fanesz/browser-activity-tracker"

export default function App() {
  const [isStart, setIsStart] = useState(false);
  const keyboardActivity: TActivity[] = keyboardTracker(isStart);

  return (
    ...
  )
}