ChemPare Documentation - v0.0.0
    Preparing search index...

    Factory class for querying multiple chemical suppliers simultaneously. This class provides a unified interface to search across multiple supplier implementations.

    // Create a factory to search all suppliers
    const factory = new SupplierFactory("sodium chloride", new AbortController());

    // Create a factory to search specific suppliers
    const factory = new SupplierFactory(
    "sodium chloride",
    new AbortController(),
    ["SupplierCarolina", "SupplierLaballey"]
    );

    // Iterate over results from all selected suppliers
    for await (const product of factory) {
    console.log(product.supplier, product.title, product.price);
    }

    Type Parameters

    Index

    Constructors

    • Factory class for querying all suppliers.

      Type Parameters

      Parameters

      • query: string

        Value to query for

      • limit: number = ...

        Maximum number of results for each supplier

      • controller: AbortController

        Fetch controller (can be used to terminate the query)

      • suppliers: string[] = []

        Array of suppliers to query (empty is the same as querying all)

      Returns SupplierFactory<P>

    Methods

    • Get the list of available supplier module names. Use these names when specifying which suppliers to query in the constructor.

      Returns string[]

      Array of supplier class names that can be queried

      const suppliers = SupplierFactory.supplierList();
      // Returns: ["SupplierCarolina", "SupplierLaballey", "SupplierBioFuranChem", ...]

      // Use these names to create a targeted factory
      const factory = new SupplierFactory("acid", controller, suppliers.slice(0, 2));
    • Executes the execute() method on all selected suppliers in parallel using async-await-queue. Results are collected and flattened into a single array.

      Parameters

      • concurrency: number = 3

        Maximum number of suppliers to process in parallel (default: 3)

      Returns Promise<P[]>

      Promise resolving to an array of all products from all suppliers

      const factory = new SupplierFactory("acetone", 5, new AbortController());
      const allProducts = await factory.executeAll(3); // 3 suppliers in parallel
      console.log(allProducts);
    • Streams products from all selected suppliers as soon as each supplier's execute() resolves. Uses async-await-queue for concurrency control and yields products as they are available.

      Parameters

      • concurrency: number = 3

        Maximum number of suppliers to process in parallel (default: 3)

      Returns AsyncGenerator<P, void, undefined>

      AsyncGenerator yielding products from all suppliers as soon as they are ready

      for await (const product of factory.executeAllStream(3)) {
      console.log(product);
      }

    Properties

    query: string
    controller: AbortController
    suppliers: string[]
    limit: number = 5
    logger: Logger