Socket
Socket
Sign inDemoInstall

pac-resolver

Package Overview
Dependencies
9
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    pac-resolver

Generates an asynchronous resolver function from a PAC file


Version published
Weekly downloads
7.4M
decreased by-4.64%
Maintainers
1
Install size
1.89 MB
Created
Weekly downloads
 

Package description

What is pac-resolver?

The pac-resolver package is a module for Node.js that allows you to parse and execute PAC (Proxy Auto-Configuration) files to determine the appropriate proxy for a given URL. PAC files are written in JavaScript and are used to specify whether web browsers should direct traffic through a proxy server or connect directly.

What are pac-resolver's main functionalities?

Executing PAC Scripts

This feature allows you to execute a PAC script to determine the proxy for a given URL. The code sample demonstrates how to create a simple PAC function that always returns 'DIRECT', meaning no proxy is used.

const pac = require('pac-resolver');
const FindProxyForURL = pac('function FindProxyForURL(url, host) { return 'DIRECT'; }');
FindProxyForURL('http://example.com').then(console.log); // 'DIRECT'

Asynchronous PAC Script Execution

This feature allows for asynchronous execution of PAC scripts using async/await syntax. The code sample demonstrates how to define a PAC function that specifies a proxy server and then asynchronously retrieves the proxy for a URL.

const pac = require('pac-resolver');
const FindProxyForURL = pac('function FindProxyForURL(url, host) { return 'PROXY proxy.example.com:8080'; }');
(async () => {
  const proxy = await FindProxyForURL('http://example.com');
  console.log(proxy); // 'PROXY proxy.example.com:8080'
})();

Other packages similar to pac-resolver

Readme

Source

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:

  • filename - String - the filename to use in error stack traces. Defaults to proxy.pac.
  • sandbox - Object - a map of functions to include in the sandbox of the JavaScript environment where the JS code will be executed. i.e. if you wanted to include the common alert function you could pass alert: console.log. For async functions, you must set the async = true property on the function instance, and the JS code will be able to invoke the function as if it were synchronous.

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

Keywords

FAQs

Last updated on 12 Feb 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc