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

@cnaallotey/auto-form-filler

v1.1.0

Published

A lightweight library to automatically fill and submit forms based on URL query parameters

Readme

CI npm version License: MIT

Auto Form Filler

A lightweight, zero-dependency JavaScript library that automatically fills and submits forms based on URL query parameters. Perfect for marketing campaigns, lead generation, and form automation.

✨ Features

  • 🎯 Smart Form Filling: Automatically fills form fields based on URL query parameters
  • 🔄 Multiple Input Types: Supports text, email, checkbox, radio, select, and more
  • 🛠️ Customizable: Flexible field mappings and configuration options
  • Auto-Submit: Optional automatic form submission with configurable delay
  • 🔄 Custom Submission: Support for both native form submission and custom submit functions
  • 🔍 Debug Mode: Built-in debugging tools for development
  • 📦 Zero Dependencies: Lightweight and fast
  • 🎨 TypeScript Support: Full TypeScript definitions included
  • 🎮 Event Hooks: Custom callbacks for form submission and error handling

📦 Installation

# Using npm
npm install @cnaallotey/auto-form-filler

# Using yarn
yarn add @cnaallotey/auto-form-filler

# Using pnpm
pnpm add @cnaallotey/auto-form-filler

🚀 Quick Start

import { autoFillForm } from '@cnaallotey/auto-form-filler';

// Initialize with default settings
autoFillForm();

⚙️ Configuration

Basic Configuration

import { autoFillForm } from '@cnaallotey/auto-form-filler';

autoFillForm({
  formSelector: '#signup-form',
  autoSubmit: true
});

Advanced Configuration

import { autoFillForm } from '@cnaallotey/auto-form-filler';

autoFillForm({
  formSelector: '#signup-form',
  fieldMappings: {
    custom_field: '#custom-input',
    another_field: 'input[name="another"]'
  },
  autoSubmit: true,
  submitDelay: 2000,
  debug: true,
  // Custom submit function (optional)
  customSubmitFunction: async (form, data) => {
    // Example: Custom AJAX submission
    const response = await fetch(form.action, {
      method: form.method,
      body: new FormData(form)
    });
    // Handle response
    if (!response.ok) {
      throw new Error('Form submission failed');
    }
  },
  onBeforeSubmit: (form, data) => {
    // Custom validation or processing before submit
    return true; // Return false to prevent submission
  },
  onAfterSubmit: (form, data) => {
    // Custom handling after submit
    console.log('Form submitted with data:', data);
  },
  onError: (error) => {
    // Custom error handling
    console.error('An error occurred:', error);
  }
});

🔗 URL Query Parameters

The library automatically maps URL query parameters to form fields. For example:

https://example.com/[email protected]&name=John%20Doe&company=Acme

This will automatically fill:

🎯 Default Field Mappings

The library includes smart default mappings for common fields:

| Parameter | Selectors | |-----------|-----------| | email | input[name="email"], input[type="email"], #email | | name | input[name="name"], input[name="fullname"], #name, #fullname | | firstname | input[name="firstname"], input[name="first_name"], #firstname | | lastname | input[name="lastname"], input[name="last_name"], #lastname | | phone | input[name="phone"], input[type="tel"], #phone | | company | input[name="company"], input[name="organization"], #company | | utm_source | input[name="utm_source"], #utm_source | | utm_medium | input[name="utm_medium"], #utm_medium | | utm_campaign | input[name="utm_campaign"], #utm_campaign |

📚 API Reference

autoFillForm(config?: FormFillerConfig): AutoFormFiller

Initializes the form filler with optional configuration.

Configuration Options

interface FormFillerConfig {
  /** CSS selector for the form element */
  formSelector?: string;
  
  /** Custom field mappings */
  fieldMappings?: Record<string, string>;
  
  /** Whether to automatically submit the form after filling */
  autoSubmit?: boolean;
  
  /** Delay in milliseconds before auto-submitting */
  submitDelay?: number;
  
  /** Custom submit function to handle form submission */
  customSubmitFunction?: (form: HTMLFormElement, data: Record<string, string>) => Promise<void> | void;
  
  /** Callback before form submission */
  onBeforeSubmit?: (form: HTMLFormElement, data: Record<string, string>) => boolean;
  
  /** Callback after form submission */
  onAfterSubmit?: (form: HTMLFormElement, data: Record<string, string>) => void;
  
  /** Error handling callback */
  onError?: (error: Error) => void;
  
  /** Enable debug mode */
  debug?: boolean;
}

🧪 Testing

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Thanks to all contributors who have helped shape this project
  • Inspired by the need for simpler form automation solutions