form-genie
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

Form Genie

Use LLMs to prefill forms.

Currently supports Google Forms and JotForm. You can also define your own custom form providers using the FormProvider interface.

Installation

npm install form-genie

# or

yarn add form-genie

Usage

Basic Usage with Multiple Providers

import { FormGenie, GoogleFormProvider, JotFormProvider } from 'form-genie';

const formGenie = new FormGenie({
  formProviders: [
    new GoogleFormProvider(),
    new JotFormProvider(process.env.JOTFORM_API_KEY),
  ],
  openAISecret: 'sk-proj-...',
});

// Example 1: Get form parameters
const googleFormParameters = await formGenie.getUrlParameters('https://docs.google.com/forms/d/e/1FAIpQLScdKjyHqtiUA7_wZX0Tt5GZw7JUSoRVlnHHR3i2j0pPKH-o_A/viewform');
console.log('Google Form parameters:', googleFormParameters);

const jotFormParameters = await formGenie.getUrlParameters('https://form.jotform.com/24261751757616');
console.log('JotForm parameters:', jotFormParameters);

// Example 2: Transform user data to parameters
const userData = 'John Doe, 30 years old, software engineer';
const transformedGoogleData = await formGenie.transformUserDataToParameters(
  googleFormParameters,
  userData,
  'https://docs.google.com/forms/d/e/1FAIpQLScdKjyHqtiUA7_wZX0Tt5GZw7JUSoRVlnHHR3i2j0pPKH-o_A/viewform',
  
);
console.log('Transformed Google Form data:', transformedGoogleData);

// Example 3: Create a prefilled form link
const prefilledGoogleUrl = await formGenie.createPrefilledFormLink(
  'https://docs.google.com/forms/d/e/1FAIpQLScdKjyHqtiUA7_wZX0Tt5GZw7JUSoRVlnHHR3i2j0pPKH-o_A/viewform',
  userData
);
console.log('Prefilled Google Form URL:', prefilledGoogleUrl);

const prefilledJotFormUrl = await formGenie.createPrefilledFormLink(
  'https://form.jotform.com/24261751757616',
  userData
);
console.log('Prefilled JotForm URL:', prefilledJotFormUrl);

Custom Form Provider

You can create your own custom form provider by implementing the FormProvider interface:

import { FormGenie, FormProvider } from 'form-genie';
import { Parameter } from 'form-genie/types/parameter';

class CustomFormProvider implements FormProvider {
  formProviderName = 'Custom Form Provider';

  canHandle(formUrl: string): boolean {
    // Implement logic to determine if this provider can handle the given URL
    return formUrl.includes('custom-form-provider.com');
  }

  async getFormParametersFromUrl(formUrl: string): Promise<Parameter[]> {
    // Implement your own logic to get form parameters from the URL
    return [];
  }

  createPrefilledLink(formUrl: string, parameters: Record<string, string>): string {
    // Implement your own logic to create a prefilled form link
    return '';
  }
}

const formGenie = new FormGenie({
  formProviders: [new CustomFormProvider()],
  openAISecret: 'sk-proj-...',
});

TODO

  • [ ] Add more form providers
  • [ ] Support non-OpenAI providers (Anthropic, Groq, etc.)
  • [ ] Add more examples
  • [ ] Add more tests

Contributing

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

Readme

Keywords

none

Package Sidebar

Install

npm i form-genie

Weekly Downloads

42

Version

2.0.0

License

MIT

Unpacked Size

41.8 kB

Total Files

38

Last publish

Collaborators

  • theodormarcu