← Back to Index

pac-resolver

Generates an asynchronous resolver function from a PAC file

This module accepts a JavaScript String of code, which is meant to be a
PAC proxy file, and returns a generated asynchronous
FindProxyForURL() function.

Example

Given the PAC proxy file named proxy.pac:

function FindProxyForURL(url, host) {
  if (isInNet(myIpAddress(), "10.1.10.0", "255.255.255.0")) {
    return "PROXY 1.2.3.4:8080";
  } else {
    return "DIRECT";
  }
}

You can consume this PAC file with pac-resolver like so:

import { readFileSync } from 'fs';
import { createPacResolver } from 'pac-resolver';

const FindProxyForURL = createPacResolver(readFileSync('proxy.pac'));

const res = await FindProxyForURL('http://foo.com/');
console.log(res);
// "DIRECT"

API

pac(qjs: QuickJSWASMModule, pacFileContents: string | Buffer, options?: PacResolverOptions) → Function

Returns an asynchronous FindProxyForURL() function based off of the given JS
string pacFileContents PAC proxy file. An optional options object may be
passed in which respects the following options:

The qjs parameter is a QuickJS module instance as returned from getQuickJS() from the quickjs-emscripten module.