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

authflux

v1.0.2

Published

Authflux is a flexible backend package for task scheduling, allowing storage of documents in MongoDB and automated deletion based on user-defined schedules or expiration logic.

Downloads

22

Readme

Authflux

Authflux is a flexible backend package for task scheduling, allowing storage of documents in MongoDB and automated deletion based on user-defined schedules or expiration logic. It integrates easily into any Node.js or TypeScript-based backend project, such as Express.js, and leverages MongoDB for data persistence.

Features

  • Schedule tasks that automatically expire and delete.
  • Store data in MongoDB with flexible expiry logic.
  • Handle task scheduling and deletion based on dynamic fields (e.g., email).

Installation

npm install authflux

Module Imports

// Import necessary functions from 'authflux'
import { connectToDatabase, createJob, RestoreTimer, JobModel } from 'authflux';

/**
 * 1. You should place this in your main file (like `index.ts` or `index.js`).
 * 2. Call `connectToDatabase` at the start of your app to ensure MongoDB connection.
 * 3. Call `RestoreTimer` to restore scheduled tasks when the server restarts.
 */

// Step 1: Connect to your MongoDB database
await connectToDatabase(process.env.MONGO_URI);

// Step 2: Restore timers from the database (usually when the server restarts)
// This restores jobs that were scheduled before the server stopped
RestoreTimer('email');  // 'email' should be the reference field you've used in your jobs

// Example Route: Create a Job in your Express.js app

/**
 * Use the `createJob` function to create a new task, such as storing an OTP for expiration.
 * 
 * Structure of the createJob:
 * 
 * createJob(
 *   { name, username, email, password, OTP, token },               // Job data
 *   { expiryValue: 1, expiryUnit: 'minutes' },                     // Expiry config (e.g., 1 minute)
 *   { referenceFields: ['email'] }                                 // Reference fields (to ensure uniqueness based on 'email')
 * )
 */

app.post('/create-job', async (req, res) => {
  try {

//add jobModel
//make your own
await JobModel.findOne({
  //filter
})

    const { name, username, email, password, otp, token } = req.body;

    // Step 3: Use `createJob` to store a new job with expiry
    const newJob = await createJob(
      { name, username, email, password, OTP: otp, token },   // Job data
      { expiryValue: 1, expiryUnit: 'minutes' },             // Expiry configuration
      { referenceFields: ['email'] }                         // Ensuring the job is unique by 'email'
    );

    res.status(200).json({ success: true, job: newJob });
  } catch (error) {
    res.status(500).json({ success: false, error: error.message });
  }
});

// Example of starting the server
app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});